14. PHP 게시판 만들기, view 제작 3

2015.04.21 22:13
저자 : Kurien

주의: 본 게시판은 보안을 생각하지 않고 만들어졌으므로 실제로 사용되어서는 안되는 코드입니다.

공부할 때 게시판이 이처럼 동작한다는 정도로만 이해해주세요.


이번에는 view의 댓글 기능을 만들어보겠습니다.


댓글은 지금까지 만든 게시판의 write, list와 흡사한 부분이 많습니다.

하지만 댓글과 게시판의 다른 점이 있는데, 바로 댓글의 깊이입니다.


댓글의 깊이라는게 어떤건지 잘 모르시겠죠?

어떤 게시판이든 댓글이 있으면 그 댓글에 또 하나의 댓글을 달 수 있는 기능들이 있죠,

게시판마다 다른 부분인데 어떤 곳은 댓글의 댓글(2depth)까지 댓글을 달 수도 있고, 어떤곳은 계속해서 달 수 있는 곳도 있습니다.


제 블로그의 경우에는 2depth 까지 댓글을 지원한다고 보시면 됩니다.


제가 만들어볼 댓글 기능도 2depth까지만을 지원할 생각이구요.

만약 더 depth를 늘리고 싶다면 구글에서 댓글에 대한 다른 알고리즘을 참고해보세요~


이제 아래의 파일과 함께 코드를 확인해보죠.


20150421_project.zip


comment.php와 comment_update.php를 만들기 전에 댓글을 저장할 DB 테이블을 만들어야 합니다.


create table comment_free(

co_no int unsigned not null primary key auto_increment,

b_no int unsigned not null,

co_order int unsigned default 0,

co_content text not null,

co_id varchar(20) not null,

co_password varchar(100) not null

);


board_free와 비슷하게 comment_free라는 테이블을 만들었습니다.

각 열에 대해 설명드리자면 co_no은 각 댓글의 고유 번호구요,

b_no은 댓글이 달리는 게시판의 번호를 나타냅니다.

co_order는 depth를 위해 만든 부분인데요,

만약 1depth의 댓글이라면 co_no과 같은 값이 들어가게 되고 2depth라면 부모 댓글의 co_no 값이 들어가게 됩니다.

나머지 co_content, co_id, co_password는 b_content, b_id, b_password와 같으니 넘어가겠습니다.



<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>


이 부분은 comment.php입니다.

아직 댓글이 보이는 부분은 제작하지 않았고, 댓글을 쓰는 부분만 만들었습니다.


comment.php는 아직 크게 어려운 부분이 없습니다.

그냥 form 태그에 table로 레이아웃을 잡고, th, td를 사용해서 아이디, 비밀번호, 내용을 전송하는 부분입니다.

comment.php는 view.php의 하단에 include 됩니다.


<?php

require_once('../dbconfig.php');

$bNo = $_POST['bno'];

$coId = $_POST['coId'];

$coPassword = $_POST['coPassword'];

$coContent = $_POST['coContent'];

$sql = 'insert into comment_free values(null, ' .$bNo . ', null, "' . $coContent . '", "' . $coId . '", password("' . $coPassword . '"))';

$result = $db->query($sql);

$coNo = $db->insert_id;

$sql = 'update comment_free set co_order = co_no where co_no = ' . $coNo;

$result = $db->query($sql);

if($result) {

?>

<script>

alert('댓글이 정상적으로 작성되었습니다.');

location.replace("./view.php?bno=<?php echo $bNo?>");

</script>

<?php

}

?>


이번에는 comment_update.php입니다.

위에서 봤던 comment.php에서 넘어온 데이터를 먼저 각각의 변수에 받아줍니다.


$bNo, $coId, $coPassword, $coContent에 각 POST 변수를 넣어준 후 sql 쿼리문을 만듭니다.


여기서는 insert 문을 이용해서 각각의 값을 삽입하는데, $coPassword는 password()로 감싸주는 것 잊지마세요!

$db->query($sql)로 전송이 성공적으로 끝났다면 $coNo = $db->insert_id;를 이용해서 방금 insert한 댓글의 번호를 받아옵니다.


그 다음 다시 sql을 작성하는데, 이번엔 update문입니다.

comment_free 테이블에서 co_no이 $coNo과 같은 데이터의 co_order의 값을 co_no의 값으로 바꿔줍니다.

이렇게 해준 이유는 아까 말한 것처럼 댓글이 1depth일 때는 co_no == co_order이여야 하기 때문이죠.


만약 $result 값이 정상이라면 "댓글이 정상적으로 작성되었습니다."라는 문구와 함께 다시 view.php화면으로 돌아갑니다.


여기까지 댓글 1depth 작성이였습니다.

아직 view.php에서는 작성한 댓글이 보이지 않겠지만,

DB상에는 정상적으로 올라오는 것을 확인 했으니 다음 포스팅에서 그 값으로 댓글 출력 부분을 알아보겠습니다.


어려운 부분은 댓글에 남겨주시구요.

현재 상황이 궁금하신 분은 http://kurien.dothome.co.kr에서 확인하실 수 있습니다.

TAG ,
  1. 2016.02.29 09:30 신고  댓글주소  수정/삭제  댓글쓰기

    으아 내용만 쓰고싶은데 잘 안되네요.. 제가 웹디자인 배운지 한달정도되가는데 역시 해석은 매우어렵네요

  2. dkdlel 2016.10.28 12:52 신고  댓글주소  수정/삭제  댓글쓰기

    카톡으로 어떤 오류가 떴는지 동영상으로 보여드리고 싶은데 가능할까요?

  3. ichinose 2017.06.19 10:33 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 게시판 만들기 다라하다가 급 궁금해 댓글 답니다. 보통 게시판 만들 때 DB를 회원 테이블, 게시판 테이블, 댓글 테이블 이렇게 세가지로 나누어 관리하는건가요?

  4. 바이낸 2018.01.22 05:18 신고  댓글주소  수정/삭제  댓글쓰기

    1. 바이낸스는 무엇인가요?

    바이낸스는 홍콩에 소재한 거래소로, 비트렉스에 이어 거래량 2위를 기록하고 있습니다. 빗썸은 바이낸스 다음에 위치하네요. (2017년 12월 26일 현재, 코인마켓캡 기준) 바이낸스는 ICO를 통해 초기 자금을 확보하였으며, 개장일이 2017년 6월 14일로 그 역사가 무척이나 짧은데도 불구하고 빠른 속도와 깔끔한 인터페이스를 바탕으로 무서운 성장세를 보이고 있습니다. 가까운 시일내에 비트렉스를 넘어 세계 최대 규모의 거래소가 될 것으로 예상해봅니다. 바이낸스는 PC로 접속할 시 한글을 지원하기 때문에 국내 사용자도 어려움없이 사용할 수 있습니다.



    2. 신분증 인증이 필수인가요?

    아니오. 신분증 인증 없이도 무제한 입금과 무제한 거래가 가능합니다. 신분증 인증을 하면 출금한도가 하루에 100 비트코인으로 늘어납니다. 인증을 안해도 출금한도가 하루당 2비트코인이기 때문에, 어지간한 큰손이 아닌 이상 신분증 인증이 급하지는 않습니다.



    3. 바이낸스의 장점은 무엇인가요?

    -인터페이스가 깔끔합니다.

    -다양한 코인이 상장되어 있습니다.(메이저 코인은 물론 다양한 신규 알트코인이 상장되어 있습니다)

    -한글이 지원됩니다.

    -거래 수수료가 0.1%, 바이낸스 코인 구입시 0.05%로 저렴합니다. (빗썸은 0.15%입니다.)

    -서버 폭파가 없습니다.

    -출금시 관리자의 승인이 필요없습니다. 한국 거래소처럼 관리자가 수작업으로 승인해 주느라 몇시간씩 까먹고 하는 일이 없습니다.



    4. 입/출금한도는 얼마인가요?

    입금 한도는 무제한입니다. 출금한도는 인증을 하지 않았을 시 하루에 2비트코인입니다.

    신분증(여권, 주민등록증)으로 본인 인증시 하루에 100비트코인으로 늘어납니다. 인증을 하지 않아도 '하루'에 2비트코인을 전송할 수 있기 때문에 인증 없이 충분히 사용할 만합니다. 여담으로 인증처리도 금방 해 줍니다. 저는 인증을 했는데, 하루만에 완료되었습니다.



    5.바이낸스에 입금은 어떻게 하나요?

    국내 거래소에 보유하고 계신 코인을 바이낸스로 보내는 방식입니다. 바이낸스에서 해당 코인의 지갑주소를 생성하시어 그 주소로 코인을 전송하시면 됩니다. 이 부분은 아래에서 자세하게 방법에 대해 설명해드리겠습니다.



    6. 거래 수수료율은 몇퍼센트인가요?

    0.1%입니다. 그러나 바이낸스 코인(BNB)코인을 구매하면 수수료가 절반으로 줄어들어 0.05%입니다.



    7. 바이낸스 코인(BNB)란 무엇인가요?

    바이낸스에서 자체 발행한 코인입니다. 이 코인 역시 다른 코인과 마찬가지로 사고 팔면서 시세차익을 노릴 수도 있습니다. ($0.1 하던게 $7.3으로 다섯달만에 70배나 올랐네요..) 특이한 점은 바이낸스 코인을 소지한 상태에서 코인을 거래할 경우 수수료를 절반으로 깎아주며, 수수료로 바이낸스 코인이 소멸된다는 점입니다. 예를 들어 바이낸스 코인을 5개 사고 거래를 하면 수수료 대신 바이낸스 코인이 소멸하게 되어 4.9개.. 4.8개..로 줄어들게 됩니다. 바이낸스 코인을 소지시 수수료율이 0.05%밖에 안하므로 거래를 자주 하시는 분들은 반드시 바이낸스 코인을 구매하시는 것이 좋습니다.



    8. 마켓이란 무엇인가요?

    한국 거래소에서는 원화 거래가 주를 이루는 데 비하여, 외국 거래소는 비트코인과 이더리움등으로 다른 알트코인을 구매하는 것이 주를 이룹니다. 바이낸스에는 BTC(비트코인) 마켓, ETH(이더리움)마켓, BNB(바이낸스 코인)마켓, USDT(테더)마켓이 있습니다.

    마켓이름은 AAA/BBB 식으로 표시됩니다. XRP/BTC마켓이라 하면 BTC를 이용하여 XRP(리플)을 산다는 의미입니다.



    9. 바이낸스는 완벽한가요? 단점은 없나요?

    물론 단점도 있습니다. 가장 큰 단점은 소액 거래/출금이 안된다는 점입니다. 최소 거래 단위가 0.001BTC(약 2만원)입니다. 예를 들어 리플같은 경우 1개 단위로 사거나 팔 수 없고, 한번에 7개 이상씩 거래해야 합니다. 또, 대부분의 거래가 비트코인으로 이루어지기 때문에 원화거래가 익숙하신 분들은 불편함을 느끼실 수 있다는 것도 단점입니다(이 부분은 금방 익숙해지긴 합니다). 또 하나의 단점은 비상탈출(?)이 어렵다는 점입니다. 국내 거래소야 대폭락이 예상되면 얼른 현금전환하고 관망하면 되지만, 바이낸스의 경우 일단 소유하고 있는 알트코인을 비트코인으로 바꾼 후 USDT로 바꿔야 하기 때문에 국내거래소보다 탈출시간이 두배 이상 오래 걸립니다. 그러는 사이 손실이 점점 더 커질수도 있겠지요.

    따라서 무조건 바이낸스만 쓰는 것이 정답은 아니며, 개인의 전략과 상황에 따라 적절히 국내거래소와 바이낸스를 혼용하시면 되겠습니다.



    그럼 지금부터 본론으로 들어가 바이낸스 회원가입 방법과 사용방법에 대해 자세하게 말씀드리겠습니다.



    1. 바이낸스에 회원가입하기

    아래 링크를 통해 바이낸스로 이동합니다.

    바이낸스로 이동하기

    http://bit.ly/2G3Rz12