글 수정하는 것은 post.php -> edit.php 로 복사해서 사용한다.
어차피 글 작성 폼과 수정 폼은 동일하고 단지 수정하기에서는 DB에서 내용을 불러와 뿌려주기만 하면 된다.
그리고 edit_ok.php에서 DB에 업데이트를 하면 된다.
업데이트를 하기 전에 패스워드가 일치하는지를 체크하는 루틴을 둔다.
<edit.php>
<?
include "db_connect.php";
$main_no = $_GET[main_no];
//Restore data from DB
$sql = "SELECT * FROM board WHERE main_no='$main_no' ";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
?>
<html>
<head>
<meta HTTP-EQUIV="CONTENT-TYPE" content="text/html;charset=EUC-kr">
<title>글 수정하기</title>
<script language="JavaScript">
<!--
function send()
{
if (document.edit_form.title.value.length <1) {
alert("제목을 입력하십시오.");
document.edit_form.title.focus();
return false;
} else if (document.edit_form.content.value.length <1) {
alert("본문 내용이 없습니다.");
document.edit_form.content.focus();
return false;
}
document.edit_form.submit();
}
-->
</script>
</head>
<body bgcolor=#ffffff>
<div align="center">
<table border="0">
<tr>
<td><font color="red">글 수정하기</font></td>
</tr>
</table>
<form name="edit_form" action="edit_ok.php" method="post">
<input type="hidden" name="main_no" value="<? echo $row[main_no] ?>">
<table cellspacing="0" border="0">
<tr>
<td align="left" width="70">글쓴이 </td>
<td align="left"><input type="text" name="name" size="12" maxlength="12" value="<? echo $row[name] ?>"></td>
</tr>
<tr>
<td align="left">패스워드</td>
<td align="left"><input type="password" name="passwd" size="12" maxlength="12"></td>
</tr>
<tr>
<td align="left">이메일</td>
<td align="left"><input type="text" name="email" size="30" maxlength="30" value="<? echo $row[email] ?>"></td>
</tr>
<tr>
<td align="left" valign="center">제 목 </td>
<td align="left"><input type="text" name="title" size="50" maxlength="50" value="<? echo $row[title] ?>"></td>
</tr>
<tr>
<td align="center" colspan="2"><textarea name="content" rows="17" cols="75"><? echo $row[content] ?></textarea><br />
<input onclick="send()" value="수 정" type="button"><input onclick="javascript:(history.back(-1));" value="취 소" type="reset">
<input onclick="javascript:(document.location.replace('list.php'));" value="글 목록보기" type="button">
</td>
</tr>
</form>
</div>
</body>
</html>
</textarea>
</br>
</br>
<edit_ok.php>
</br>
<br />
</br>
</br>
<textarea name="code" class="php" cols="50" rows="10">
<?
//include common functions to connect to DB
include 'db_connect.php';
$main_no = $_POST[main_no];
$title = $_POST[title];
$name = $_POST[name];
$content = $_POST[content];
$email = $_POST[email];
$passwd = $_POST[passwd];
//Check password routine
$pw_sql = "SELECT passwd FROM board WHERE main_no='$main_no'";
$result = mysql_query($pw_sql);
$row = mysql_fetch_array($result);
if($passwd != $row[passwd] )
echo "<script language=\"JavaScript\">
alert(\"패스워드가 맞지 않습니다.\");
history.back(-1);
</script>";
else {
//update table
$sql = "UPDATE board SET title='$title', name='$name', content='$content', date=now(), email='$email' WHERE main_no='$main_no' ";
mysql_query($sql) or dbError(mysql_error());
echo "<script language=\"JavaScript\"> alert(\"글을 수정했습니다.\");
document.location.replace(\"list.php\"); </script>"; }
?>
134라인부터가 edit_ok.php 소스입니다.
소스에 라인넘버를 붙여주는 프로그램이 textarea 영역이 있으면 오류가 있더라구요.
'PHP > 게시판 만들기' 카테고리의 다른 글
게시판 만들기 중간정리 (소스 첨부) (0) | 2008.11.14 |
---|---|
글 삭제하기 작성 (0) | 2008.11.14 |
글 작성하기 수정 (0) | 2008.11.13 |
게시판 설계 변경 (6) | 2008.11.13 |
테이블 구조 변경하기 (0) | 2008.11.12 |