내용관리에서 a버튼 누르면 해당 게시글 wr_1 b로 바꾸는법
본문
내용관리에서 a버튼 누르면 해당 게시글 wr_1을 빈값으로 바꾸는법 어떻게 하면 될까요? ㅠㅠ
답변 1
1. JavaScript 클릭 이벤트 처리:
"a" 버튼에 JavaScript로 클릭 이벤트 리스너를 추가하여 Ajax 요청을 보냄.
2. Ajax 요청 작성:
요청은 대상 게시글의 ID(wr_id)와 테이블 이름(bo_table)을 서버로 전달.
3. 서버 측 PHP 처리:
전달받은 wr_id와 bo_table로 게시글을 조회한 후,
SQL 업데이트 쿼리를 실행하여 해당 wr_1 필드를 빈값으로 설정.
4. SQL 쿼리 검증:
UPDATE {table_name} SET wr_1='' WHERE wr_id={id} 형식으로 작성하며,
반드시 SQL 인젝션 방지를 위해 준비된 명령어(Prepared Statement)를 사용.
5. 결과:
Ajax 요청에 성공/실패 메시지를 반환하고, 성공 시 UI를 업데이트합니다.
- /js/common.js에 이벤트 리스너 추가
document.querySelectorAll('.a-button').forEach(button => {
button.addEventListener('click', function() {
const wr_id = this.dataset.wrId;
const bo_table = this.dataset.boTable;
if (!wr_id || !bo_table) {
alert('잘못된 요청입니다.');
return;
}
fetch('/adm/ajax.update_wr_1.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ wr_id, bo_table })
})
.then(response => {
if (!response.ok) throw new Error('서버 응답 에러');
return response.json();
})
.then(data => {
if (data.success) alert('wr_1 필드가 빈값으로 변경되었습니다.');
else alert('변경 실패: ' + data.message);
})
.catch(error => {
console.error('에러 발생:', error);
alert('네트워크 오류가 발생했습니다.');
});
});
});
- /adm/ajax.update_wr_1.php 파일 생성
<?php
include_once('../common.php'); // 환경 파일 로드
$input = json_decode(file_get_contents('php://input'), true) ?? [];
$wr_id = $input['wr_id'] ?? null;
$bo_table = $input['bo_table'] ?? null;
// 허용된 테이블 목록
$allowed_tables = ['board_table', 'another_table'];
if (!$wr_id || !$bo_table) {
echo json_encode(['success' => false, 'message' => '유효하지 않은 요청']);
exit;
}
// 테이블 이름 검증
if (!in_array($bo_table, $allowed_tables)) {
echo json_encode(['success' => false, 'message' => '허용되지 않은 테이블']);
exit;
}
$sql = "UPDATE {$bo_table} SET wr_1='' WHERE wr_id=?";
$stmt = sql_prepare($sql);
if (!$stmt) {
echo json_encode(['success' => false, 'message' => 'SQL 준비 실패']);
exit;
}
sql_bind_param($stmt, 'i', $wr_id);
$result = sql_execute($stmt);
echo json_encode(['success' => $result ? true : false, 'message' => $result ? '' : 'DB 업데이트 실패']);
?>
- 게시글 리스트 또는 관리 페이지의 "a" 버튼 HTML에 data-wr-id와 data-bo-table 속성 추가
<button class="a-button" data-wr-id="123" data-bo-table="board_table">a</button>
답변을 작성하시기 전에 로그인 해주세요.