15. PHP 게시판 만들기, view 제작 4
주의: 본 게시판은 보안을 생각하지 않고 만들어졌으므로 실제로 사용되어서는 안되는 코드입니다.
공부할 때 게시판이 이처럼 동작한다는 정도로만 이해해주세요.
이번에는 입력한 댓글을 view.php 페이지에 표시하는 부분을 만들었습니다.
만든건 이틀 전이지만 개인적인 일로 조금 늦어졌네요ㅠ
바로 파일과 코드 설명으로들어가겠습니다.
파일을 받고 압축을 풀어주세요.
<?php
$sql = 'select * from comment_free where co_no=co_order and b_no=' . $bNo;
$result = $db->query($sql);
?>
<div id="commentView">
<?php
while($row = $result->fetch_assoc()) {
?>
<ul class="oneDepth">
<li>
<div>
<span>작성자: <?php echo $row['co_id']?></span>
<p><?php echo $row['co_content']?></p>
</div>
<?php
$sql2 = 'select * from comment_free where co_no!=co_order and co_order=' . $row['co_no'];
$result2 = $db->query($sql2);
while($row2 = $result2->fetch_assoc()) {
?>
<ul class="twoDepth">
<li>
<div>
<span>작성자: <?php echo $row2['co_id']?></span>
<p><?php echo $row2['co_content'] ?></p>
</div>
</li>
</ul>
<?php
}
?>
</li>
</ul>
<?php } ?>
</div>
<form action="comment_update.php" method="post">
<input type="hidden" name="bno" value="<?php echo $bNo?>">
<table>
<tbody>
<tr>
<th scope="row"><label for="coId">아이디</label></th>
<td><input type="text" name="coId" id="coId"></td>
</tr>
<tr>
<th scope="row">
<label for="coPassword">비밀번호</label></th>
<td><input type="password" name="coPassword" id="coPassword"></td>
</tr>
<tr>
<th scope="row"><label for="coContent">내용</label></th>
<td><textarea name="coContent" id="coContent"></textarea></td>
</tr>
</tbody>
</table>
<div class="btnSet">
<input type="submit" value="코멘트 작성">
</div>
</form>
짧지만 뭔가 복잡해 보이는건 기분탓일껍니다 ㅠ
이번 코드에서는 두번의 sql 쿼리를 사용해서 2차원 배열을 사용한 것처럼 출력을 했습니다.
이렇게 하는 이유는 1depth 댓글과 2depth 댓글을 함께 출력해야하기 때문입니다.
무슨 말인지 어려울 수 있으니, 이번에도 차근차근 설명드려보겠습니다.
<?php
$sql = 'select * from comment_free where co_no=co_order and b_no=' . $bNo;
$result = $db->query($sql);
?>
먼저 comment_free 테이블에서 co_no이 co_order와 같고, b_no이 $bNo인 댓글을 가져옵니다.
write_update에서 에서 co_order는 co_no의 값을 넣어줬는데요.
여기서 co_order는 1depth인 부분에서만 co_no과 같은 값을 갖도록 했습니다.
하지만 아직은 글쓰기 부분에서 2Depth 부분은 수정하지 않았으니 일단은 DB에 직접 데이터를 넣었습니다.
이미지에서 빨간색 부분은 co_order가 1, 초록색 부분은 co_order가 3입니다.
빨간색 부분에서 co_no가 1인 부분은 co_order도 1이므로 1Depth이고, co_no이 2, 5인 부분은 co_order와 다르므로 2Depth입니다.
초록색 부분도 3, 3은 1Depth 4, 3은 2Depth가 되겠죠?
일단은 위에 있는 쿼리로 sql에서는 1Depth 부분을 먼저 가져옵니다.
<div id="commentView">
<?php
while($row = $result->fetch_assoc()) {
?>
<ul class="oneDepth">
<li>
<div>
<span>작성자: <?php echo $row['co_id']?></span>
<p><?php echo $row['co_content']?></p>
</div>
여기서 div로 댓글 부분을 감싸주고, ul과 li 태그로 댓글 부분을 나타냈습니다.
여기서 $row['co_id']는 댓글을 남긴 사람의 id, $row['co_content']는 댓글 내용을 나타냅니다.
<?php
$sql2 = 'select * from comment_free where co_no!=co_order and co_order=' . $row['co_no'];
$result2 = $db->query($sql2);
while($row2 = $result2->fetch_assoc()) {
?>
<ul class="twoDepth">
<li>
<div>
<span>작성자: <?php echo $row2['co_id']?></span>
<p><?php echo $row2['co_content'] ?></p>
</div>
</li>
</ul>
<?php
}
?>
</li>
</ul>
<?php } ?>
</div>
그 아래는 또 하나의 sql이 있습니다.
이 부분은 2Depth의 댓글을 출력하는 부분입니다.
1Depth를 출력하는 while문 안에 한번 더 while문이 있는데요,
이번에는 co_order가 $row['co_no'](1Depth의 댓글 번호)와 같고 co_no이 co_order와 다른 것을 찾게됩니다.
sql을 통해서 찾은 결과는 ul li 태그를 한번 더 출력해줍니다.
순서대로 하면 먼저 댓글을 출력한 후, 그에 따른 댓글들을 출력합니다.
여기까지 댓글 뷰 부분이였습니다.
현재 상황은 http://kurien.dothome.co.kr에서 볼 수 있고,
어려운 부분은 댓글에 남겨주세요!
'Project > PHP 게시판' 카테고리의 다른 글
17. PHP 게시판 만들기, view 제작 6 (59) | 2015.05.01 |
---|---|
16. PHP 게시판 만들기, view 제작 5 (25) | 2015.04.29 |
14. PHP 게시판 만들기, view 제작 3 (6) | 2015.04.21 |
13. PHP 게시판 만들기, list 제작 3 (28) | 2015.04.19 |
12. PHP 게시판 만들기, list 제작 2 (37) | 2015.04.16 |