본문 바로가기

웹 개발

[6주차] 게시판 구현 #3 - 수정, 삭제

수정 기능

 

이번에는 게시판 수정 기능을 구현해볼 겁니다

 

현재까지 구현된 기능은 게시판 리스트 구현, 게시글 읽기, 게시글 쓰기 총 3개의 기능을 구현했다.

 

modify.php를 생성해줍니다.

 

 

일단 modify.php의 내용을 작성하기 전 write.php의 내용을 복사해서 modify.php에 붙여넣어줍니다.

 

왜냐면 디테일만 조금 다를 뿐, 전체적인 틀은 비슷하기 때문이죠

 

 

그리고 글 내용을 읽는 read.php 에도 수정 버튼을 만들어 버튼을 클릭하면 modify.php로 이동하도록 코딩해줍니다.

 

게시판에서 아무 글이나 클릭하면

 

이런 버튼이 생겼습니다.

 

그럼 이 수정 버튼에 해당 글을 수정하는 페이지를 띄울 텐데, 냅다 modify.php로 보내는 게 아니라

get 방식으로 게시글의 number 값을 보내면서 modify.php로 이동해야 하므로

 

버튼을 a 태그로 감싸서 다음과 같이 넣어준다.

 

<a href="./modify.php=<?php echo $board['number'];?>"><button>수정</button></a>

 

이렇게 되면 수정 버튼을 누를 때, 해당 게시글의 number 값이 URL 파라미터에 붙으면서

modify.php로 이동한다.

 

이제 modify.php를 완성해보자

 

write.php에선 처음 php 코드에 세션만 시작했지만

modify.php에선 GET 방식으로 받은 number 값을 변수에 저장하고

 

데이터베이스를 이용해야하므로 데이터베이스 셋팅도 해준다.

 

$bno = $_GET['number'];
$con = mysqli_connect(어쩌구저쩌구 DB정보들);
$query = "SELECT * FROM board WHERE number='$bno';";
$result = $con->query($query);
$board = $result->fetch_array();

 

write.php에서 가져왔으므로 form의 action이 향하는 주소를 바꿔줘야 한다.

write_update 를 드래그해서 바꿔주자

 

write.php 였으면 그냥 작성 페이지만 열면 해결됐었지만 수정 기능에선 수정하려는 게시글의 number를 받아와야한다.

따라서 코드를

 

<form action="./modify_proc.php?number=<?php echo $bno; ?>" method="POST">

 

이렇게 입력해준다. 이러면 form 태그 영역에 있는 정보들은 POST로 보내면서

게시글 number 값은 url 을 통해 get 방식으로 보낼 수 있다.

 

title이 있는 테이블 td 태그에는 데이터베이스의 제목을 끄집어와준다.

 

<?php echo $board['title']; ?>

 

content가 있는 테이블 td 태그에는 데이터베이스에 있는 content 내용을 끄집어와준다.

<?php echo $board['content']; ?>

 

이렇게 구현된 웹 사이트에서 게시판에서 아무 글이나 클릭해서 글읽기를 해보자

 

7번 게시글을 한번 수정해볼 것이다.

 

 

 

 

그럼 수정 버튼이 있다

수정 버튼을 누르면 클릭한 페이지의 number가 전달되면서 

 

해당 제목과 내용이 textarea에 그대로 출력되는 것을 확인할 수 있다.

 

표시될 때 왜 중간에 위치하는지는 좀 더 연구를 해봐야겠다.

 

이제 수정을 처리할 modify_proc.php를 생성해준다.

 

 

세션 시작해주고 데이터베이스 연결은 기본적으로 해준다.

 

<?php
session_start();

$con = mysqli_connect('localhost','root','1234','test');

$bno = $_GET['number'];
$username = $_SESSION['id'];
$userpw = $_POST['bPassword'];
$title = $board['bTitle'];
$content = $board['bContent'];

$query = "UPDATE board SET name='$username',password='$userpw',title='$title',content='$content' WHERE number='$bno'";
$result = $con-> query($query);

echo "수정이 완료되었습니다!<br><br>";
echo "<a href='noticeboard.php'><button>게시판으로 돌아가기</button></a>";
?>

 

그 다음 get으로 받은 게시판의 number를 저장하고 ID는 어차피 닉네임을 쓰는 것이 아니기 때문에

바뀔 일이 없지만 쿼리문을 위해 변수로 저장은 해둔다.

그다음 비밀글이 아니었다가 새로 비밀번호를 변경할 수도 있으므로 userpw로 저장해주고

title과 content는 POST 방식으로 저장해둔다.

 

그리고 쿼리문을 입력해주면 끝!

 

그리고 echo 버튼으로 게시판으로 돌아가는 버튼을 만들어 주면 끝이다.

 

그럼 7번의 제목과 내용을 아무렇게나 수정해보자.

 

그럼 게시판으로 돌아가기 버튼이 뜨고 이 버튼을 다시 누르면,

 

7번의 내용이 깔끔하게 수정된 것을 볼 수 있다.

 

글 읽기도 문제 없이 가능하다.

 

 

데이터베이스의 내용도 잘 바뀌어있다.

삭제 기능

 글을 읽는 read.php 파일에 삭제 버튼을 추가해줍니다.

 

<a href="./delete_proc.php?number=<?php echo $board['number'];?>">
<button>
삭제
</button></a>

 

delete 파일은 간단합니다.

삭제할 파일의 number만 URL을 통해 GET 방식으로 전달받으면 다른 변수는 선언할 필요가 없다.

 

delete_proc.php

<?php
session_start();

$con = mysqli_connect('localhost','root','1234','test');

$bno = $_GET['number'];

$query = "DELET from board WHERE number='$bno'";
$result = $con->query($query);

echo "삭제가 완료되었습니다!<br><br>";
echo "<a href='noticeboard.php'><button>게시판으로 돌아가기</button></a>"

 

8번 게시글을 한번 삭제시켜보자

 

 

추가한 삭제 버튼이 잘 보인다.

 

코딩한대로라면 저 삭제 버튼을 누르면 바로 삭제가 될 것이다.

 

 

8번이 깔끔하게 삭제되었다.

 

그런데 이렇게 하면 재차 확인도 물어보지 않고 바로 삭제되므로

 

확인 창을 띄운 후, 그 창에서 OK를 하면 삭제를 하게 코드를 하나 추가하자

 

아까 read.php에 추가했던 코드를 좀 더 수정하면 된다.

<a href="./delete_proc.php?number=<?php echo $board['number'];?>" 
onclick="return confirm('정말로 삭제하시겠습니까? 삭제 후에는 되돌릴 수 없습니다.')">
<button>
삭제
</button></a>

 

onclick 속성을 줘서 눌렀을 때 confirm 창이 나오는 자바스크립트 코드를 추가했다. 이렇게 하면 OK를 누르지 않으면

delete_proc.php 창으로 진행하지 않는다.

취소를 눌렀더니 삭제가 안되었다.

확인을 눌렀더니 삭제가 완료되었다.

 

이렇게 수정과 삭제 기능을 추가해보았다.

 

다음에는 게시판에 페이징 기능을 추가해볼 것이다.

 

소스 참조

https://dawitblog.tistory.com/13

https://blog.naver.com/bgpoilkj/220777288172