9. PHP 게시판 만들기, delete 제작 1

2015. 4. 11. 00:45
저자 : Kurien

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

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


지금까지 글 목록, 글 쓰기, 글 읽기, 글 수정까지 제작했습니다.

이번에는 글 삭제를 만들어보겠습니다.


201504010_project.zip


<?php

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


//$_GET['bno']이 있어야만 글삭제가 가능함.

if(isset($_GET['bno'])) {

$bNo = $_GET['bno'];

}

?>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title>자유게시판 | Kurien's Library</title>

<link rel="stylesheet" href="./css/normalize.css" />

<link rel="stylesheet" href="./css/board.css" />

</head>

<body>

<article class="boardArticle">

<h3>자유게시판 글삭제</h3>

<?php

if(isset($bNo)) {

$sql = 'select count(b_no) as cnt from board_free where b_no = ' . $bNo;

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

$row = $result->fetch_assoc();

if(empty($row['cnt'])) {

?>

<script>

alert('글이 존재하지 않습니다.');

history.back();

</script>

<?php

exit;

}

$sql = 'select b_title from board_free where b_no = ' . $bNo;

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

$row = $result->fetch_assoc();

?>

<div id="boardDelete">

<form action="./delete_update.php" method="post">

<input type="hidden" name="bno" value="<?php echo $bNo?>">

<table>

<caption class="readHide">자유게시판 글삭제</caption>

<thead>

<tr>

<th scope="col" colspan="2">글삭제</th>

</tr>

</thead>

<tbody>

<tr>

<th scope="row">글 제목</th>

<td><?php echo $row['b_title']?></td>

</tr>

<tr>

<th scope="row"><label for="bPassword">비밀번호</label></th>

<td><input type="password" name="bPassword" id="bPassword"></td>

</tr>

</tbody>

</table>


<div class="btnSet">

<button type="submit" class="btnSubmit btn">삭제</button>

<a href="./index.php" class="btnList btn">목록</a>

</div>

</form>

</div>

<?php

//$bno이 없다면 삭제 실패

} else {

?>

<script>

alert('정상적인 경로를 이용해주세요.');

history.back();

</script>

<?php

exit;

}

?>

</article>

</body>

</html>


위의 코드는 새로 만든 delete.php라는 파일의 코드입니다.

write.php와 비슷한 부분이 있어서 write.php를 이해했다면 쉽게 이해할 수 있을겁니다.


먼저 글 수정과 같이 $_GET['bno']을 $bNo 변수에 받아옵니다.

글을 삭제하기 위해선 어떤 글인지를 알 수 있어야 하니까요.


html 부분은 넘어가고, if(isset($bNo)) {} 부분을 살펴봅시다.

select문을 이용해서 $bNo에 해당하는 글을 찾고,

글이 없다면 "글이 존재하지 않습니다."라는 경고창을 출력하고 프로그램을 종료합니다.


글이 있다면 사용자가 어떤 글을 삭제하려는지 알기 쉽게 삭제할 글의 제목을 출력하기 위해 b_title을 가져옵니다.


이제 form 태그의 action 속성에는 삭제를 실행할 delete_update.php를 적고,

삭제를 하는 사람이 글을 적은 사람인지 확인 할 수 있게 bPassword input 태그를 하나 만듭니다.


그 하단에는 삭제 버튼과 리스트로 돌아갈 수 있는 목록 버튼을 만들구요.


마지막으로 $bNo값이 없다면 "정상적인 경로를 이용해주세요."라는 경고창을 출력하고 프로그램을 종료합니다.

피곤해서인지 글이 조금 횡설수설 한 것 같지만, 위에서 적었던 것처럼 write.php와 비슷한 부분이 많아서 어렵진 않을거라고 생각되네요.

잘 모르시겠다면 댓글에 남겨주세요.
진행 상황은 http://kurien.dothome.co.kr에서 보실 수 있습니다.


TAG ,
  1. 삐구엘 2015.08.20 10:21  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 잘 보고 배워갑니다!

  2. 초보입문 2016.02.19 14:45  댓글주소  수정/삭제  댓글쓰기

    이거너무어려워요...

  3. PHP입문생 2016.06.22 11:52  댓글주소  수정/삭제  댓글쓰기

    작성을하면 잘되긴하는데 제목을 입력하지않아도 작성이되는데 어떻게 해야할까요..?

  4. eses 2020.02.14 11:10  댓글주소  수정/삭제  댓글쓰기

    view.php에서 bno를 받아왔다면,

    <?php

    if(isset($bNo)) {

    $sql = 'select count(b_no) as cnt from board_free where b_no = ' . $bNo;

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

    $row = $result->fetch_assoc();

    if(empty($row['cnt'])) {

    ?>

    <script>

    alert('글이 존재하지 않습니다.');

    history.back();

    </script>

    <?php

    exit;

    }


    -> 이부분이 왜 필요한지 이해가 안가요ㅠ
    이미 존재하고 있는 글에서 bno를 가져왔는데 글의 존재를 확인하는 이유가 뭔가요?

  5. 울브스 2021.08.28 09:00  댓글주소  수정/삭제  댓글쓰기

    당신은 종종 선수를 보고 그가 클롭의 팀에 얼마나 잘 어울릴지 생각할때가 있으며 하비 반스는 그 범주안에 속합니다.

    레스터시티에서 뛰어난 속도와 유망한 잠재성을 가지고 있으며 직선적인 스타일을 가지고 있는 윙어가 리버풀과 연결되고 있습니다.

    24살의 하비 반스는 사디오 마네 와 디오고 조타가 각각 사우샘프턴과 울브스에서 있다 리버풀로 온것처럼 비교 대상이 되고 있습니다 .



    프로모션 스토리

    "나는 Barnes가 클롭의 선수라고 생각합니다. 그는 매우 [ https://mtpolice9.xyz ] 직접적이고, 정말 빠르며, 도전이나 몸싸움을 주저하지 않습니다."라고 Analyzing Anfield 팟캐스트 에서 캐스터 조윌리암스 가 말했습니다 .

    "나는 이전에 브랜던 로저스에게 그가 집중할때 더 좋은 플레이를 보여주는 유형의 선수 라고 말한 적이 있습니다 .

    "비록 그것은 그가 가진 장점들의 일부분이지만 그가 집중하고 경기장에서 화를 낼 때 나는 그 모습을 좋아합니다.



    하비 반스는 시즌중 많은 시간을 부상당했음에도 불구하고 반스는 레스터(폭스)를 위해 9골 4도움을 기록했습니다.

    이 수치는 마네와 조타가 리버풀로 이적하기전 이전 소속팀에서의 모습과 비교됩니다.


    "그는 겨우 24살입니다. 그는 지난 시즌이 끝날 무렵 부상을 입었고, [ https://mtpolice10.xyz ] 그래서 그는 스포트라이트에서 조금 벗어났습니다."라고 윌리엄스는 강조했습니다.

    "울브스의 조타와 사우샘프턴의 마네를 보면 둘 다 리버풀보다 더 순위가 낮았던 프리미어 리그 클럽이였던만큼 레스터의 반즈도 비슷하다고 느낍니다."


    레스터는 이적시장에서 영리한 운영을 하는것으로 유명합니다. 그들은 종종 이적시장에서 핵심 선수를 판매하지만 최대로 받을수있는 이득을 얻도록 합니다.

    이것은 레스터가 반스에 대한 거래를 이미 책정된 가치보다 훨씬 더 크게 받을수 있는것으로 의미가 갑니다.


    "반스에 관해서는 리버풀이 레스터를 상대로 잘해낼수 있을지 모르겠습니다.. 만약 그들이 영입 할 수 있다면 리버풀이 뛰어들수 있는 좋은 거래가 될 것이라고 생각합니다."