7. PHP 게시판 만들기, write 제작 3
주의: 본 게시판은 보안을 생각하지 않고 만들어졌으므로 실제로 사용되어서는 안되는 코드입니다.
공부할 때 게시판이 이처럼 동작한다는 정도로만 이해해주세요.
오늘은 이미 적었던 글을 수정하는 부분을 제작했습니다.
일단 아래의 파일을 받아주세요.
가장 먼저 수정된 부분은 view.php입니다.
기존의 내용에서 #boardView 내부에 아래의 태그를 추가했습니다.
<div class="btnSet">
<a href="./write.php?bno=<?php echo $bno?>">수정</a>
<a href="./delete.php">삭제</a>
<a href="./">목록</a>
</div>
이 .btnSet에 있는 a 태그 중 수정 부분이 오늘 만들 부분입니다.
새로운 파일을 생성 할 필요 없이 위에 있는 것처럼 write.php와 wrtie_update.php를 한번 더 이용했습니다.
수정된 부분을 확인해봅시다.
<?php
require_once("../dbconfig.php");
//$_GET['bno']이 있을 때만 $bno 선언
if(isset($_GET['bno'])) {
$bNo = $_GET['bno'];
}
if(isset($bNo)) {
$sql = 'select b_title, b_content, b_id from board_free where b_no = ' . $bNo;
$result = $db->query($sql);
$row = $result->fetch_assoc();
}
?>
<!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>
<div id="boardWrite">
<form action="./write_update.php" method="post">
<?php
if(isset($bNo)) {
echo '<input type="hidden" name="bno" value="' . $bNo . '">';
}
?>
<table id="boardWrite">
<caption class="readHide">자유게시판 글쓰기</caption>
<tbody>
<tr>
<th scope="row"><label for="bID">아이디</label></th>
<td class="id">
<?php
if(isset($bNo)) {
echo $row['b_id'];
} else { ?>
<input type="text" name="bID" id="bID">
<?php } ?>
</td>
</tr>
<tr>
<th scope="row"><label for="bPassword">비밀번호</label></th>
<td class="password"><input type="password" name="bPassword" id="bPassword"></td>
</tr>
<tr>
<th scope="row"><label for="bTitle">제목</label></th>
<td class="title"><input type="text" name="bTitle" id="bTitle" value="<?php echo isset($row['b_title'])?$row['b_title']:null?>"></td>
</tr>
<tr>
<th scope="row"><label for="bContent">내용</label></th>
<td class="content"><textarea name="bContent" id="bContent"><?php echo isset($row['b_content'])?$row['b_content']:null?></textarea></td>
</tr>
</tbody>
</table>
<div class="btnSet">
<button type="submit" class="btnSubmit btn">
<?php echo isset($bNo)?'수정':'작성'?>
</button>
<a href="./index.php" class="btnList btn">목록</a>
</div>
</form>
</div>
</article>
</body>
</html>
먼저 write.php에서 수정된 부분에 대해서 설명드리겠습니다.
//$_GET['bno']이 있을 때만 $bno 선언
if(isset($_GET['bno'])) {
$bNo = $_GET['bno'];
}
이 부분은 <a href="./write.php?bno=<?php echo $bno?>">수정</a>에서 봤던 bno=(번호)를 변수로 받는 부분입니다.
if(isset($_GET['bno'])) {}을 사용한 이유는, 저는 개발할 때 모든 경고가 출력되게 하는데,
이럴 때 $_GET['bno']가 없는 상황(글쓰기 일 때)에는 notice라는 경고나 출력됩니다.
notice 오류는 무시하더라도 거의 정상적으로 동작하지만, 저는 모든 notice를 없애면서 하겠습니다.
어쨋든 이런 방식으로 $_GET['bno']이 존재할 때만 $bNo이라는 변수를 선언하게 됩니다.
if(isset($bNo)) {
$sql = 'select b_title, b_content, b_id from board_free where b_no = ' . $bNo;
$result = $db->query($sql);
$row = $result->fetch_assoc();
}
그 아래 부분을 보면 이번에는 if(isset($bNo)) {}으로 되어있습니다.
이 부분도 위와 비슷한데요, 만약 위에서 $bNo = $_GET['bno'];이 실행 되었다면 isset($bNo) 또한 TRUE이므로 정상적으로 실행됩니다.
여기서는 $bNo이 선언 되었을 때만 DB를 이용해서 기존의 b_title, b_content, b_id의 값을 가져오게 됩니다.
<?php
if(isset($bNo)) {
echo '<input type="hidden" name="bno" value="' . $bNo . '">';
}
?>
조금 내려가면 이 부분이 있습니다.
이번에도 isset($bNo)이니 이 부분은 생략하고 진행하겠습니다.
echo를 통해서 '<input type="hidden" name="bno" value="' . $bNo . '">';를 출력해줍니다.
이 부분을 넣은 이유는 form을 submit 할 때 현재의 bNo(게시판 번호)도 함께 전송하기 위해서입니다.
게시판 번호가 있어야 어떤 글인지를 알 수 있으니까요.
<?php
if(isset($bNo)) {
echo $row['b_id'];
} else { ?>
<input type="text" name="bID" id="bID">
<?php } ?>
여기서는 $bNo이 존재한다면 id만 표시하구요.
$bNo이 없다면 <input type="text" name="bID" id="bID">라는 input 태그를 출력합니다.
글을 수정하는데 글쓴이 아이디가 바뀔 필요는 없잖아요?
value="<?php echo isset($row['b_title'])?$row['b_title']:null?>"
<?php echo isset($row['b_content'])?$row['b_content']:null?>
다음은 이 두 부분입니다.
만약 input 태그에 값을 넣으려면 value="값"을 이용해야 하는데, 수정 시에는 전에 작성했던 내용이 들어가야 하기 때문에 위와같이 적습니다.
a == b ? a : b를 3항 연산자라고 하는데, 만약 a == b가 true 라면 a를, false라면 b를 출력하는 연산이죠.
여기서는 $row['b_title']이 있을 때와, $row['b_content']가 있을 때를 가지고 연산을 실행했습니다.
만약 "글쓰기" 라면 null이 출력될 것이고, "글수정"이라면 $row['b_title'], $row['b_content']가 출력되겠죠.
<?php echo isset($bNo)?'수정':'작성'?>
마지막으로 이 부분입니다.
별거 없이 그냥 $bNo이 있으면 수정, 아니라면 작성이라는 버튼으로 변경해주는 부분입니다.
아무래도 시간이 늦어져서 write_update.php 부분의 설명은 다음 포스팅으로 미뤄야 할 것 같네요.
어려운 부분은 댓글 남겨주시구요, 현재 진행 상황은 http://kurien.dothome.co.kr에서 보실 수 있습니다.
시간 나는대로 쓰고 있으니 기다려주세요^^
'Project > PHP 게시판' 카테고리의 다른 글
9. PHP 게시판 만들기, delete 제작 1 (8) | 2015.04.11 |
---|---|
8. PHP 게시판 만들기, write 제작 4 (16) | 2015.04.08 |
6. PHP 게시판 만들기, view 제작 1 (30) | 2015.04.05 |
5. PHP 게시판 만들기, write 제작 2 (36) | 2015.04.02 |
4. PHP 게시판 만들기, write 제작 1 (13) | 2015.03.31 |