본문 바로가기
따라 공부하기/PHP게시판 따라하기

[PHP+MySQL]게시판 만들기 4 - 글 수정 및 삭제와 추천하기 기능

by DawIT 2020. 12. 3.
320x100

이 글은 이곳을 참고하여 쓰여졌습니다.

 

이번에는 글 수정과 삭제, 그리고 내가 따로 만든 추천수 기능을 추가할 것이다.

 

일단 글 수정을 위한 modify.php 파일을 작성한다.

 

<!--- 게시글 수정 -->
<?php
	include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";
   
	$bno = $_GET['idx'];
	$sql = query("select * from board where idx='$bno';");
	$board = $sql->fetch_array();
 ?>
<!doctype html>
<head>
<meta charset="UTF-8">
<title>게시판</title>
<link rel="stylesheet" href="/BBS/css/style.css" />
</head>
<body>
    <div id="board_write">
        <h1><a href="/">자유게시판</a></h1>
        <h4>글을 수정합니다.</h4>
            <div id="write_area">
                <form action="modify_ok.php?idx=<?php echo $bno; ?>" method="post">
                    <div id="in_title">
                        <textarea name="title" id="utitle" rows="1" cols="55" placeholder="제목" maxlength="100" required><?php echo $board['title']; ?></textarea>
                    </div>
                    <div class="wi_line"></div>
                    <div id="in_name">
                        <textarea name="name" id="uname" rows="1" cols="55" placeholder="글쓴이" maxlength="100" required><?php echo $board['name']; ?></textarea>
                    </div>
                    <div class="wi_line"></div>
                    <div id="in_content">
                        <textarea name="content" id="ucontent" placeholder="내용" required><?php echo $board['content']; ?></textarea>
                    </div>
                    <div id="in_pw">
                        <input type="password" name="pw" id="upw"  placeholder="비밀번호" required />  
                    </div>
                    <div class="bt_se">
                        <button type="submit">글 작성</button>
                    </div>
                </form>
            </div>
        </div>
    </body>
</html>

 

Form 자체는 저번에 작성한 write.php와 비슷하다. form action = "..." 구문을 통해 수정된 값들을 받아 POST 방식으로 modify_ok.php에 전달하는 방식이다.

 

그리고 이제 수정된 정보를 받아 db에 반영하는 modify_ok.php 를 작성한다.

 

<?php
include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";

$bno = $_GET['idx'];
$username = $_POST['name'];
$userpw = password_hash($_POST['pw'], PASSWORD_DEFAULT);
$title = $_POST['title'];
$content = $_POST['content'];
$sql = query("update board set name='".$username."',pw='".$userpw."',title='".$title."',content='".$content."' where idx='".$bno."'"); ?>

<script type="text/javascript">alert("수정되었습니다."); </script>
<meta http-equiv="refresh" content="0 url=/BBS/index.php">

 

이렇게 작성하고 저장한 뒤 게시판에 접속한다.

 

 

아무 글이나 잡고 수정을 선택하면

 

 

이렇게 글을 수정하는 페이지가 정상적으로 출력된다.

 

 

아무렇게나 수정하고 글 작성을 선택한다.

 

 

그러면 이렇게 수정되었다는 메시지가 출력되고, index.php로 돌아가게 된다.

 

 

글을 확인해보면 수정이 정상적으로 완료된 것을 확인 할 수 있다.

 

이제 삭제 기능을 구현할 것이다.

 

삭제 기능은 꽤 간단한데, delete.php를 만들기만 하면 된다.

 

<?php
	include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";
	
	$bno = $_GET['idx'];
	$sql = query("delete from board where idx='$bno';");
?>
<script type="text/javascript">alert("삭제되었습니다.");</script>
<meta http-equiv="refresh" content="0 url=/BBS/index.php" />

 

$bno 변수에 idx를 받아와 저장하고, 쿼리로 idx가 $bno와 같은 row를 삭제하라고 명령한 뒤 index.php로 돌아가게 설정한다.

 

 

이제 게시판에서 아무 글이나 들어가서 삭제를 선택해본다.

 

 

삭제되었다는 메시지가 출력되면서,

 

 

정상적으로 삭제된 것을 확인할 수 있다. 그런데 이걸 진행하다가 한가지 문제점을 발견했다.

 

내가 추가한 추천수 항목과 조회수 항목이 보여주는 값이 바뀌어 있다. 즉 추천수 항목에서 조회수를 보여주고, 조회수 항목에서 추천수를 보여주고 있었다.

 

index.php를 수정하면 된다.

 

 

조회수 와 추천수의 순서를 바꾸어 해결했다.

 

이제 추천하기 기능을 만들 것이다.

 

일단 read.php를 통해 [추천]버튼을 만들고, 글 상단에 추천수를 표시한다.

 

그리고 간단한 thumbup.php 파일을 작성한다.

<?php
	include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";
   
	$bno = $_GET['idx'];
    $thumbup = mysqli_fetch_array(query("select thumbup from board where idx='$bno';"));
    $thumbup = $thumbup['thumbup'] + 1;
    query("update board set thumbup=".$thumbup." where idx=".$bno.";");
    ?>
    <script type="text/javascript">alert("추천되었습니다.");</script>
    <meta http-equiv="refresh" content="0 url=/BBS/index.php" />

 

read.php로부터 idx값을 전달받아 $bno 변수에 저장한 후 쿼리문 두 번을 통해 추천수 값을 1 늘린다.

 

지금은 로그인 기능이 없어서 무한 추천이 가능하지만 나중에는 계정별로 추천 여부 변수를 만들어서 진행해야 할 것 같다.

 

이렇게 작성하고 아무 글이나 들어가서 추천을 누르면,

 

추천되었다는 메시지와 함께 추천수가 올라간 것을 확인할 수 있다.

 

다음에는 글 잠금 기능을 만들어 봐야겠다.

댓글