테스트 사이트 - 개발 중인 베타 버전입니다

고수님들 sql 질문드립니다 채택완료

그누최공 8개월 전 조회 2,647

질문드립니다!

 

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="대기"> 상태로 넘겨 관리자에서 

</p>

<p>if($row['status'] == '대기') {</p>

<p> <button type="button" name="button">답변완료</button>

 <button type="button" name="button">답변취소</button></p>

<p>} else {</p>

<p> <?php echo $row['status']; ?></p>

<p>}</p>

<p>

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

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
glitter0gim
8개월 전

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

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를 통해 서버와 비동기적으로 통신하므로 페이지 새로고침 없이 즉시 반영.

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

그누최공
8개월 전
감사합니다!
g
glitter0gim
8개월 전
(●'◡'●)

댓글을 작성하려면 로그인이 필요합니다.

n
8개월 전

추가 피해자 방지 https://sir.kr/conflictconsultation/245" rel="nofollow noreferrer noopener" target="_blank">https://sir.kr/conflictconsultation/245

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

유찬아빠
8개월 전

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인