이 글은 이곳을 참고하여 쓰여졌습니다.
오늘은 게시판에 댓글을 달아보려고 한다.
댓글을 달기 위해 먼저 reply테이블을 만들어준다.
reply 테이블을 구성은 이렇다.
그리고 글을 조회하는데 사용되는 read.php에서 댓글 부분을 추가해준다.
일단 <head> 태그에 필요한 js파일과 css를 로드한다.
<?php
include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php"; /* db load */
?>
<!doctype html>
<head>
<meta charset="UTF-8">
<title>게시판</title>
<link rel="stylesheet" type="text/css" href="/BBS/css/style.css" />
<link rel="stylesheet" type="text/css" href="/BBS/css/jquery-ui.css" />
<script type="text/javascript" src="/BBS/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="/BBS/js/jquery-ui.js"></script>
<script type="text/javascript" src="/BBS/js/common.js"></script>
</head>
<body>
<?php
$bno = $_GET['idx']; /* bno함수에 idx값을 받아와 넣음*/
$hit = mysqli_fetch_array(query("select * from board where idx =".$bno));
$hit = $hit['hit'] + 1;
$fet = query("update board set hit = '".$hit."' where idx = '".$bno."'");
$sql = query("select * from board where idx=".$bno); /* 받아온 idx값을 선택 */
$board = $sql->fetch_array();
?>
<!-- 글 불러오기 -->
<div id="board_read">
<h2><?php echo $board['title']; ?></h2>
<div id="user_info">
<?php echo $board['name']; ?> <?php echo $board['date']; ?> 조회:<?php echo $board['hit']; ?> 추천수:<?php echo $board['thumbup']; ?>
<div id="bo_line"></div>
</div>
<div id="bo_content">
<?php echo nl2br("$board[content]"); ?>
</div>
<!-- 목록, 수정, 삭제 -->
<div id="bo_ser">
<ul>
<li><a href="/">[목록으로]</a></li>
<li><a href="thumbup.php?idx=<?php echo $board['idx']; ?>">[추천]</a></li>
<li><a href="modify.php?idx=<?php echo $board['idx']; ?>">[수정]</a></li>
<li><a href="delete.php?idx=<?php echo $board['idx']; ?>">[삭제]</a></li>
</ul>
</div>
</div>
<!--- 댓글 불러오기 -->
<div class="reply_view">
<h3>댓글목록</h3>
<?php
$sql3 = query("select * from reply where con_num='".$bno."' order by idx desc");
while($reply = $sql3->fetch_array()){
?>
<div class="dap_lo">
<div><b><?php echo $reply['name'];?></b></div>
<div class="dap_to comt_edit"><?php echo nl2br("$reply[content]"); ?></div>
<div class="rep_me dap_to"><?php echo $reply['date']; ?></div>
<div class="rep_me rep_menu">
<a class="dat_edit_bt" href="#">수정</a>
<a class="dat_delete_bt" href="#">삭제</a>
</div>
<!-- 댓글 수정 폼 dialog -->
<div class="dat_edit">
<form method="post" action="/BBS/rep_modify_ok.php">
<input type="hidden" name="rno" value="<?php echo $reply['idx']; ?>" /><input type="hidden" name="b_no" value="<?php echo $bno; ?>">
<input type="password" name="pw" class="dap_sm" placeholder="비밀번호" />
<textarea name="content" class="dap_edit_t"><?php echo $reply['content']; ?></textarea>
<input type="submit" value="수정하기" class="re_mo_bt">
</form>
</div>
<!-- 댓글 삭제 비밀번호 확인 -->
<div class='dat_delete'>
<form action="/BBS/reply_delete.php" method="post">
<input type="hidden" name="rno" value="<?php echo $reply['idx']; ?>" /><input type="hidden" name="b_no" value="<?php echo $bno; ?>">
<p>비밀번호<input type="password" name="pw" /> <input type="submit" value="확인"></p>
</form>
</div>
</div>
<?php } ?>
<!--- 댓글 입력 폼 -->
<div class="dap_ins">
<form action="/BBS/reply_ok.php?idx=<?php echo $bno; ?>" method="post">
<input type="text" name="dat_user" id="dat_user" class="dat_user" size="15" placeholder="아이디">
<input type="password" name="dat_pw" id="dat_pw" class="dat_pw" size="15" placeholder="비밀번호">
<div style="margin-top:10px; ">
<textarea name="content" class="reply_content" id="re_content" ></textarea>
<button id="rep_bt" class="re_bt">댓글</button>
</div>
</form>
</div>
</div><!--- 댓글 불러오기 끝 -->
<div id="foot_box"></div>
</div>
</body>
</html>
그리고 read.php 하단에 댓글입력을 위한 코드들을 추가해준다. 일단 댓글목록에는 reply테이블에 기존에 있던 모든 댓글을 $bno와 con_num이 일치하는 것들만 가져옴으로써 출력한다. 구체적으로는 $reply 변수에 fetch_array()함수를 통해 각각의 컬럼에 해당하는 정보를 가져오고, dap_io 에서 한줄씩 출력해준다.
또한 댓글을 작성했을 시, reply_ok.php로 post형식으로 데이터가 전달되니, 해당되는 reply.php를 작성한다.
<?php
include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";
$bno = $_GET['idx'];
$userpw = password_hash($_POST['dat_pw'], PASSWORD_DEFAULT);
if($bno && $_POST['dat_user'] && $userpw && $_POST['content']){
$sql = query("insert into reply(con_num,name,pw,content) values('".$bno."','".$_POST['dat_user']."','".$userpw."','".$_POST['content']."')");
echo "<script>alert('댓글이 작성되었습니다.');
location.href='/BBS/read.php?idx=$bno';</script>";
}else{
echo "<script>alert('댓글 작성에 실패했습니다.');
history.back();</script>";
}
?>
이렇게 작성해주고 게시판을 새로고침한다.
아무 글이나 들어가주면 하단에 댓글 입력 폼이 생성되어있는 것을 볼 수있다.
이제 아무 댓글이나 입력해준다. 그리고 댓글 버튼을 선택하면,
작성 완료 메시지와 함께 정상적으로 댓글이 표시되는것을 확인할 수 있다.
그냥 마치기는 조금 심심해서 index.php에서 글 제목 옆에 댓글 개수를 숫자로 나타내주는 코드를 추가해 보았다.
php를 많이 해본것은 아니여서 기존 코드의 방식을 그대로 사용했는데.. 이게 최적의 방법은 아닐 거 같다.
그래도 작동은 잘 한다!!!
다음에는 댓글 수정 및 삭제 기능을 넣어봐야겠다.
'따라 공부하기 > PHP게시판 따라하기' 카테고리의 다른 글
[PHP+MySQL]게시판 만들기 8 - 페이지 넘버 (0) | 2020.12.07 |
---|---|
[PHP+MySQL]게시판 만들기 7 - 댓글 수정 및 삭제 (0) | 2020.12.06 |
[PHP+MySQL]게시판 만들기 5 - 글 잠금 기능 (1) | 2020.12.04 |
[PHP+MySQL]게시판 만들기 4 - 글 수정 및 삭제와 추천하기 기능 (0) | 2020.12.03 |
[PHP+MySQL]게시판 만들기 3 - 글작성과 글 읽기 (5) | 2020.12.02 |
댓글