이 글은 이곳을 참고하여 쓰여졌습니다.
오늘은 댓글 수정 및 삭제 기능을 추가해보려 한다.
먼저 저번에 추가해줬던 common.js에 댓글 수정과 삭제에 관한 코드를 작성해준다.
$(document).ready(function(){
$(".dat_edit_bt").click(function(){
/* dat_edit_bt클래스 클릭시 동작(댓글 수정) */
var obj = $(this).closest(".dap_lo").find(".dat_edit");
obj.dialog({
modal:true,
width:650,
height:200,
title:"댓글 수정"});
});
$(".dat_delete_bt").click(function(){
/* dat_delete_bt클래스 클릭시 동작(댓글 삭제) */
var obj = $(this).closest(".dap_lo").find(".dat_delete");
obj.dialog({
modal:true,
width:400,
title:"댓글 삭제확인"});
});
});
그 뒤, 댓글을 수정하기 위한 rep_modify_ok.php 를 작성한다.
<?php
include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";
$rno = $_POST['rno'];//댓글번호
$sql = query("select * from reply where idx='".$rno."'"); //reply테이블에서 idx가 rno변수에 저장된 값을 찾음
$reply = $sql->fetch_array();
$bno = $_POST['b_no']; //게시글 번호
$sql2 = query("select * from board where idx='".$bno."'");//board테이블에서 idx가 bno변수에 저장된 값을 찾음
$board = $sql2->fetch_array();
$sql3 = query("update reply set content='".$_POST['content']."' where idx = '".$rno."'");//reply테이블의 idx가 rno변수에 저장된 값의 content를 선택해서 값 저장
?>
<script type="text/javascript">alert('수정되었습니다.'); location.replace("/BBS/read.php?idx=<?php echo $bno; ?>");</script>
rep_modify_ok.php를 보면 이전에 작성한 modify_ok.php와 많이 유사한 것을 알 수 있다. 조금 바뀐 점이 있다면 댓글 번호를 따로 불러와서 사용한다는 점이다. 그 외 다른 코드들은 거의 유사하다.
그리고 삭제 기능을 위한 reply_delete.php를 작성한다.
<?php
include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";
$rno = $_POST['rno'];
$sql = query("select * from reply where idx='".$rno."'");//reply테이블에서 idx가 rno변수에 저장된 값을 찾음
$reply = $sql->fetch_array();
$bno = $_POST['b_no'];
$sql2 = query("select * from board where idx='".$bno."'");//board테이블에서 idx가 bno변수에 저장된 값을 찾음
$board = $sql2->fetch_array();
$pwk = $_POST['pw'];
$bpw = $reply['pw'];
if(password_verify($pwk, $bpw))
{
$sql = query("delete from reply where idx='".$rno."'"); ?>
<script type="text/javascript">alert('댓글이 삭제되었습니다.'); location.replace("/BBS/read.php?idx=<?php echo $board["idx"]; ?>");</script>
<?php
}else{ ?>
<script type="text/javascript">alert('비밀번호가 틀립니다');history.back();</script>
<?php } ?>
reply_delete.php는 이전에 작성한 delete.php와는 좀 다르다. 아무래도 글의 idx와 댓글의 idx를 DB에서 각각 불러와야 하고, 댓글 작성시 사용했던 비밀번호와 지금 입력한 비밀번호가 같은지 대조도 해야 하기 때문이다.
이렇게 작성하고 게시판에 접속한다.
먼저 이 글의 댓글을 수정 하기위해 수정을 선택한다.
그러면 이렇게 댓글을 수정하기 위한 Form이 나오고, 비밀번호를 함께 입력해야 한다.
그런데 문제가 발생했다.
원래는 비밀번호가 다르면 수정이 되지 않아야 하는데 그대로 수정된다..
그래서 reply_modify_ok.php를 다음과 같이 수정했다.
<?php
include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";
$rno = $_POST['rno'];//댓글번호
$sql = query("select * from reply where idx='".$rno."'"); //reply테이블에서 idx가 rno변수에 저장된 값을 찾음
$reply = $sql->fetch_array();
$bno = $_POST['b_no']; //게시글 번호
$sql2 = query("select * from board where idx='".$bno."'");//board테이블에서 idx가 bno변수에 저장된 값을 찾음
$board = $sql2->fetch_array();
$input_pw = $_POST['pw'];
$db_pw = $reply['pw'];
// reply 테이블의 idx가 rno변수에 저장된 값의 content를 선택해서 값 저장
// 수정시 비밀번호 체크
if (password_verify($input_pw, $db_pw)) {
$sql3 = query("UPDATE reply SET content='" . $_POST['content'] . "' WHERE idx = '" . $rno . "'"); ?>
<script type="text/javascript">alert('수정되었습니다.');
location.replace("/BBS/read.php?idx=<?php echo $bno; ?>");
</script>
<?php
} else { ?>
<script type="text/javascript">alert('비밀번호가 틀립니다');
history.back();
</script>
<?php } ?>
이렇게 하고 다시 댓글 수정을 시도한다.
먼저 틀린 비밀번호로 수정을 시도할 시 비밀번호가 틀리다고 출력함과 동시에 수정이 되지 않는다.
그리고 알맞는 비밀번호를 통해 댓글을 수정할 시 수정되었다는 문구와 함께 정상적으로 댓글이 수정된다.
다음에는 이전에 JDBC를 통해서도 해봤던 페이징 기능을 구현해 봐야겠다.
'따라 공부하기 > PHP게시판 따라하기' 카테고리의 다른 글
[PHP+MySQL]게시판 만들기 9 - 파일 업로드 (1) | 2020.12.08 |
---|---|
[PHP+MySQL]게시판 만들기 8 - 페이지 넘버 (0) | 2020.12.07 |
[PHP+MySQL]게시판 만들기 6 - 댓글 작성 기능 (1) | 2020.12.05 |
[PHP+MySQL]게시판 만들기 5 - 글 잠금 기능 (1) | 2020.12.04 |
[PHP+MySQL]게시판 만들기 4 - 글 수정 및 삭제와 추천하기 기능 (0) | 2020.12.03 |
댓글