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

2015.04.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에서 보실 수 있습니다.