받은 값을 버튼으로 처리 하려고하는데 도움부탁드립니다.

받은 값을 버튼으로 처리 하려고하는데 도움부탁드립니다.

QA

받은 값을 버튼으로 처리 하려고하는데 도움부탁드립니다.

답변 3

본문

너무 자주 질문드려 죄송합니다 ^^;;

 

 

설명드리자면

회원이 출석도장을 받으려면 버튼을 눌러서신청 하면 관리자가 도장을 찍어 줄 수 있는 기능을 만들려고 합니다.

 

먼저 아래처럼 폼 버튼 서브밋 해당 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>

처음 디비테이블에 insert 까지는 해서 다음과정에서 어떤방향으로 처리를 해야할지 방향성이라던지 조언좀 받고싶어서 질문드렸어요 ㅎㅎ

여러방법으로 시도해봤는데 어렵네요 역시 ㅎㅎ 공부를좀 많이 해야 될거같아요 감사합니다
답변주신 방법으로 공부해보겠습니다!

코드가 모두 잘 작동한다는 전제하에

 

<?php if($row['a'] == "") {?>

// 출석 데이터가 없어유

<?php } else { ?>

// 출석 데이터가 있음

<?php } ?>

 

그리고 1회성이라면 모를까 출석일수도 기록하고 오늘 날짜만 가져오게 해야할것 같습니다.

 

일단 차차 공부해가며 하나하나 만들어볼려구요

컬럼을 추가해서 스탬프승인을하면 b컬럼에 1을 추가하고 b에 이전 값에 1이 있으면 1을 더해주는 방식으로 하고

html에 출력할때 if문을 사용해서 데이터 숫자에따라 도장개수를 표시하려고 생각중이거든요ㅎㅎ

문법이라든지 공부를 많이 해야될거같아요 ㅠ

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,423
© SIRSOFT
현재 페이지 제일 처음으로