고수님들 sql 질문드립니다

고수님들 sql 질문드립니다

QA

고수님들 sql 질문드립니다

본문

질문드립니다!

 

index.php 에 문의 접수 폼을만들어서 sql table에 저장시켰는데

대충 구조를 설명드리자면

 

index.php에 form 입력값을 submit 해서 bbs(bbs/user_qna.php)파일에서 데이터 처리후 sql table에 insert까지 완료, 해당 데이터를 관리자(adm/user_qna_list.php)에서까지 출력 완료 했습니다.

 

여기서 문제가

밸류값을 입력받을때

<input type="hidden" name="status" value="대기"> 상태로 넘겨 관리자에서 


if($row['status'] == '대기') {
 <button type="button" name="button">답변완료</button>
 <button type="button" name="button">답변취소</button>
} else {
 <?php echo $row['status']; ?>
}

버튼을 눌러 처리 하려고하는데 검색해도 어떻게 검색해야할지 모르겠고 방법도 안떠오르고해서 조언좀 구하고자 이렇게 질문 남겨봅니다 감사합니다!

 

이 질문에 댓글 쓰기 :

답변 3

관리자 페이지에서 상태 변경 버튼을 클릭할 때

JavaScript와 AJAX를 사용하여 상태 변경 요청을 서버로 전송하고,

이를 받은 PHP 처리 페이지에서 SQL의 UPDATE 구문으로 데이터베이스 상태값을 변경한 후

성공 여부를 JSON 형태로 반환하여 즉시 화면에 변경된 상태를 반영하는 것은 어떨까요.

 

*관리자 페이지 (adm/user_qna_list.php)의 버튼 HTML & JavaScript 코드 예시

<!-- 버튼 HTML -->
<button type="button" onclick="updateStatus(<?php echo $row['id']; ?>, '답변완료');">답변완료</button>
<button type="button" onclick="updateStatus(<?php echo $row['id']; ?>, '답변취소');">답변취소</button>

<!-- JavaScript & AJAX 코드 -->
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
function updateStatus(id, status) {
    if (!confirm(status + '(으)로 변경하시겠습니까?')) return;

    $.ajax({
        type: 'POST',
        url: './update_qna_status.php',
        data: {id: id, status: status},
        dataType: 'json',
        success: function(response) {
            if (response.result == 'success') {
                alert('상태가 변경되었습니다.');
                location.reload(); // 페이지를 새로고침하여 변경사항 즉시 반영
            } else {
                alert('상태 변경 실패: ' + response.message);
            }
        },
        error: function() {
            alert('서버와의 통신 중 오류가 발생했습니다.');
        }
    });
}
</script>

*서버측 PHP 처리파일 (adm/update_qna_status.php)

<?php
include_once('../common.php');

header('Content-Type: application/json');

// POST 값 확인 및 보안 처리
$id = isset($_POST['id']) ? (int)$_POST['id'] : 0;
$status = isset($_POST['status']) ? trim($_POST['status']) : '';

if (!$id || !$status) {
    echo json_encode(['result' => 'error', 'message' => '잘못된 요청입니다.']);
    exit;
}

// SQL Injection 방지
$status = mysqli_real_escape_string($conn, $status);

// 데이터베이스 상태 업데이트 처리
$sql = "UPDATE user_qna_table SET status = '{$status}' WHERE id = {$id}";
if (sql_query($sql)) {
    echo json_encode(['result' => 'success']);
} else {
    echo json_encode(['result' => 'error', 'message' => '데이터베이스 업데이트 중 오류가 발생했습니다.']);
}
?>

- AJAX를 통해 서버와 비동기적으로 통신하므로 페이지 새로고침 없이 즉시 반영.

- 관리자 입장에서 직관적 버튼 클릭만으로 상태를 바꿀 수 있어 편의성이 좋음.

- 서버에서 직접 데이터 처리 로직을 구현하므로 클라이언트 측 변조에 대한 보안이 확보 됨.

방법은 여러가지가 있겠네요...
ajax 를 이용하는 방법도 있을테고 해당게시글의 고유번호를 버튼 값과 같이 넘겨 업데이트 해주는 방법이 있겠네요  

답변을 작성하시기 전에 로그인 해주세요.
전체 197
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT