본문 바로가기
PHP 게시판 만들기

16. php로 기초적인 게시판 만들기 - 글 수정하기

by 똑똑한 영장류 2012. 12. 17.


Chap 16.



수정은 글 보기 와 매우 유사합니다. 우선 글 내용을 가져와서 화면에 뿌려주는데, Form 태그로 뿌려주어 수정할 수 있도록 하면 됩니다.


view.php를 수정해야겠네요.


현재 사용자와 글을 작성자가 같을 경우, 아래 쪽에 수정으로 가는 링크를 달아줍시다.


<?php
    if( $_SESSION['member_idx']==$data['member_idx']) {
        echo '<a href="http://'.$_SERVER['HTTP_HOST'].'/bbs/modify.php?doc_idx='.$doc_idx.'">수정</a>';
    }

?>


그리고, modify.php 를 작성합시다.


write.php 와 유사하니까, 그대로 가져오고, 입력하는 부분에 문서 내용을 초기 값으로 노출시키면 되겠습니다. 그리고, modify_check.php에게 현재 글번호를 전달하기 위해 doc_idx  를 hidden으로 전송합니다.



<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/preset.php';
include $_SERVER['DOCUMENT_ROOT'].'/header.php';
?>
<?php
if(isset($doc_idx)==false) {
    echo '글번호가 지정되지 않았습니다.';
    exit();
}

$q = "SELECT * FROM ap_bbs WHERE doc_idx = $doc_idx";
$result = $mysqli->query($q);
$data = $result->fetch_array();

?>
글수정하기<br />
<form name ="modify_form" method = "POST" action = "./modify_check.php">
<input type="hidden" name="doc_idx" value="<?php echo $doc_idx ?>">
<table>
    <tr>
        <td>
    제목
    </td>
    <td>
            <input type ="text" name = "subject" size ="90" value="<?php echo $data['subject'];?>">
    </td>
    </tr>
    <tr>
        <td>
            내용
    </td>
    <td>
            <textarea name="content" cols="100" rows="10" ><?php echo $data['content'];?></textarea>
    </td>
    </tr>
</table>

<div>
    <input type = "submit" value = "저장">
</div>
   

</form>

<div>
    <?php
    echo '<a href="http://'.$_SERVER['HTTP_HOST'].'/bbs/list.php" class="btn" >목록</a>';
    ?>
</div>



<?php
    include $_SERVER['DOCUMENT_ROOT'].'/footer.php';
?> 


그리고,  submit 버튼이 클릭되면 받아서 처리할 modify_check.php를 만들어 줍시다.


modify_check.php 가 하는 일은 write_check.php와 유사합니다만, DB에 저장을 하는 것이 아니라, 기존 정보를 업데이트를 해야합니다. 쿼리가 달라지지요.

INSERT 가 아니라, UPDATE 문을 사용해야 합니다.


아래와 같습니다.


$q = "UPDATE ap_bbs SET subject='$subject',content='$content' WHERE doc_idx=$doc_idx";
$result = $mysqli->query($q); 



modify_check.php는 아래와 같습니다.


<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/preset.php';
?>
<?php

$q = "UPDATE ap_bbs SET subject='$subject',content='$content' WHERE doc_idx=$doc_idx";
$result = $mysqli->query($q);

if ($result==false) {
    $_SESSION['modify_status'] = 'NO';
}
else {
    $_SESSION['modify_status'] = 'YES';
}

//$result->free();

$mysqli->close();
//var_dump($url);

header('Location: '.$url['root'].'bbs/modify_done.php');
exit();

?> 


write_done.php 처럼 modify_done.php 를 작성해서 수정 후 결과 페이지를 만들어 줍니다. 내용을 거의 같습니다.



<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/preset.php';
include $_SERVER['DOCUMENT_ROOT'].'/header.php';


$modify_status = $_SESSION['modify_status'];
if($modify_status=='YES') {
    $message = '글이 수정되었습니다.';
}
else {
    $message = '수정 실패했습니다.';
}
?>
        modify_done.php - 게시판 글 수정 완료 페이지<br />
        <hr />
<?php
    echo $message;
?>
<?php
    include $_SERVER['DOCUMENT_ROOT'].'/footer.php';
?>
 



여기까지 글 수정에 관한 내용이었습니다.


이상!






댓글