받은 값을 버튼으로 처리 하려고하는데 도움부탁드립니다.
본문
너무 자주 질문드려 죄송합니다 ^^;;
설명드리자면
회원이 출석도장을 받으려면 버튼을 눌러서신청 하면 관리자가 도장을 찍어 줄 수 있는 기능을 만들려고 합니다.
먼저 아래처럼 폼 버튼 서브밋 해당 db 테이블에 a변수를 빈값으로 저장 하는데까지 만들어놨어요
<?php
$a = '';
?>
<form>
<input type="hidden" value="<?php echo $a ?>">
<input type="submit" value="도장신청">
</form>
관리자 페이지를 따로 만들어 db 데이터를 출력 후에 해당 컬럼에 값이 없으면
버튼을 표시해서 처리하면 될거같은데 여기서 막혀버렸네요 ㅠㅠ 혹시 도움좀 주실 고수님들 계실까요 항상 감사합니다!
<?php
$sql ="select * from dbtable where a=$a";
$result = sql_query($sql);
?>
<ul>
<?php for ($i=0; $row=sql_fetch_array($result); $i++) {?>
<?php if($row['a'] == "") {?>
<li>
승인버튼
취소버튼
</li>
<?}?>
<?}?>
</ul>
!-->!-->
답변 3
아래의 코드를 한번 참고를 해보세요.
<?php
// 신청 페이지 (apply.php)
if(isset($_POST['submit_stamp'])) {
$member_id = get_session('member_id'); // 현재 로그인한 회원 ID
$apply_date = date('Y-m-d H:i:s');
$sql = "INSERT INTO stamp_requests
(member_id, request_date, status)
VALUES ('$member_id', '$apply_date', 'pending')";
sql_query($sql);
alert('도장 신청이 완료되었습니다.');
goto_url('./apply.php');
}
?>
<form method="post">
<input type="submit" name="submit_stamp" value="도장신청">
</form>
<?php
// 관리자 페이지 (admin_stamp.php)
// 승인/거절 처리
if(isset($_POST['action'])) {
$request_id = $_POST['request_id'];
$action = $_POST['action'];
if($action == 'approve') {
$sql = "UPDATE stamp_requests
SET status = 'approved',
processed_date = NOW()
WHERE id = '$request_id'";
} else if($action == 'reject') {
$sql = "UPDATE stamp_requests
SET status = 'rejected',
processed_date = NOW()
WHERE id = '$request_id'";
}
sql_query($sql);
}
// 신청 목록 조회
$sql = "SELECT sr.*, m.mb_nick
FROM stamp_requests sr
LEFT JOIN member m ON sr.member_id = m.mb_id
WHERE sr.status = 'pending'
ORDER BY sr.request_date DESC";
$result = sql_query($sql);
?>
<ul>
<?php while($row = sql_fetch_array($result)) { ?>
<li>
<?php echo $row['mb_nick']; ?> -
신청일시: <?php echo $row['request_date']; ?>
<form method="post" style="display:inline;">
<input type="hidden" name="request_id" value="<?php echo $row['id']; ?>">
<button type="submit" name="action" value="approve">승인</button>
<button type="submit" name="action" value="reject">거절</button>
</form>
</li>
<?php } ?>
</ul>
디비 구조
CREATE TABLE stamp_requests (
id INT AUTO_INCREMENT PRIMARY KEY,
member_id VARCHAR(20) NOT NULL,
request_date DATETIME NOT NULL,
status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
processed_date DATETIME NULL,
INDEX (status),
INDEX (member_id)
);
db 테이블에 a변수를 빈값으로 저장 하는데까지 만들어놨어요<==이 과장을 알아야 다음처리를 할텐데
어떤식으로 만들어 놓았는지 알 수가 없으니....
더우기 input에 name도 없이 무엇을 어떻게 저장했다는 것인지 알 수 없네요
form을 submit해서 처리하는 과정부터 공부를 하세요
sql_query <==이것을 보니 그누보드에서 하는 작업이군요
신청에서는 회원 아이디는 저장하도록 해야합니다
하여튼 신청 후 관리자는 다음처럼
mb_id는 회원 아이디, status 필드는 승인 여부를 저장하는 필드 예시 임
<?php
include "_common.php";
if(!$is_admin) die('권한 없음');
if($w=='u'){
sql_query("update dbtable set status='$status' where mb_id='$mb_id' ");
}
$result = sql_query("select * from dbtable ");
?>
<form name='frmk' method='post'>
<input type='hidden' name='w' value='u'>
<input type='hidden' name='mb_id' value=''>
<input type='hidden' name='status' value=''>
</form>
<ul>
<?php for ($i=0; $row=sql_fetch_array($result); $i++) {
$mb_id = $row['mb_id'];
if($row['status'] == "") {?>
<li><button type='button' onclick="adm_chk('승인', '<?php echo $mb_id;?>')"> 승인버튼</button>
<?php else {?>
<button type='button' onclick="adm_chk('', '<?php echo $mb_id;?>')">취소버튼</button>
<?php } ?>
</li>
<?php } ?>
</ul>
~~
<script>
function adm_chk(vv, mb_id){
frm = document.frmk;
frm.mb_id.value=mb_id;
frm.status.value= vv;
frm.submit();
}
</script>
코드가 모두 잘 작동한다는 전제하에
<?php if($row['a'] == "") {?>
// 출석 데이터가 없어유
<?php } else { ?>
// 출석 데이터가 있음
<?php } ?>
그리고 1회성이라면 모를까 출석일수도 기록하고 오늘 날짜만 가져오게 해야할것 같습니다.