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 ] 그래서 그는 스포트라이트에서 조금 벗어났습니다."라고 윌리엄스는 강조했습니다.

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


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

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


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

  6. 김민재 2021.10.13 20:33  댓글주소  수정/삭제  댓글쓰기

    공격형 미드필더 필요한 상황에 와서 쏠쏠하게 써먹었는데 세간의 기대만큼 막 역대급 천재 이런 느낌은 아니었음
    역동성이 많이 죽은게 눈에 띄어서 아스날 팬들도 '엥? 생각만큼은 아닌데...'라는 느낌도 있었지만
    오히려 하드워커 느낌이 강했고 그래도 태도나 정신적인 면에서만큼은 임대생인데도 불구하고 팀내 탑클래스에 속하는등 정말 열심히였음

    딱 적절한 시기에 와서 열심히 뛰어주다 가서 고마움

    아탈란타와 로마는 타미 에이브러햄을 원하며, 첼시도 에이브러햄의 [ http://xxx.aaoouu.com ] 임대계약을 준비하고 있지만, 알려진바에 따르면, 선수는 잉글랜드를 떠나길 원치 않으며, 그의 심장은 아스날로 향하고 있다. 23살의 센터포워드는 연쇄이적에 한 축을 담당하고 있다.



    로멜로 루카쿠가 인터밀란에서 첼시로, 에딘제코가 로마에서 인터밀란으로 이적할 수 있으며, 두반 자파타도 인터밀란의 잠재적 옵션이다. 그래서, 아탈란타와 로마는 새로운 스트라이커를 찾고 있으며, 양 팀은 모두 에이브러햄을 눈여겨보고 있다.

    성골이란 놈이 라이벌 클럽이적을 선호하네 런던말고 다른 데로 가주면 좋겠는데

    이탈리아 언론사인 Calciomercato 보도에 따르면, 첼시는 타미 에이브러햄의 2년 임대 + 임대료 5M유로 + 이적조항 30-35M유로를 수락할 준비가 되었다. 하지만, 이탈리아 언론사는 에이브러햄이 잉글랜드를 떠나길 원치 않으며, 오히려 첼시의 라이벌인 아스날로 이적하는 것을 선호한다고 주장했다.



    그는 잉글랜드 국가대표롯 6경기동안 1골을 기록했으며, [ http://yyy.aaoouu.com ] 첼시 아카데미를 졸업한 그는 브리스톨 시티, 스완지 시티, 아스톤 빌라에서 임대생활을 보냈다. 이 센터포워드는 지난시즌 첼시에서 32경기동안 12골과 6어시스트를 기록했다.


    대구고는 12일 서울 목동구장에서 열린 제52회 대통령배 전국고교야구대회(중앙일보·일간스포츠·대한야구소프트볼협회 주최) 준결승전에서 신일고를 15-2로 크게 물리쳤다. 이어 열린 경기에서 경기고는 광주일고를 7-6으로 꺾었다. 두 팀은 13일 오후 6시 대결한다.


    터키 매체에 따르면 페네르바체는 김민재에게 바캄부 영입을 위한 로비스트 역할을 맡아달라고 요청했다고함.


    아우구스토가 심지어 “김민재 이새끼는 브라질 사람이었으면 바르셀로나 간다 ㄹㅇㅋㅋ”이라고 인터뷰까지 했을 정도ㅋㅋㅋㅋ

    페네르바체는 김민재가 합류한데 이어 또다른 베이징궈안 출신의 [ http://zzz.aaoouu.com ] 선수를 영입하길원함.



    페네르바체는 김민재에게 바캄부를 설득해달라고 요청했으며, 김민재는 정식계약이후 바캄부와 소통할예정이라고함.



    바캄부는 현재 유럽복귀를 원하고있고, 같은 터키팀인 트라브존스포르도 바캄부를 주목하고있다고함.