이번 시간부터는 글 내용 수정, 삭제에 대해 다루겠습니다.
먼저 4시간에 걸쳐 아래 4개의 파일 소스부터 공개하겠습니다.
| 파일명 | 기능 |
| modify.php | 글 수정 폼 |
| modify_ok.php | 글 수정 DB 처리 부분 |
| delete.php | 글 삭제 폼 |
| delete_ok.php | 글 삭제 DB 처리 부분 |
modify.php는 글 내용 보기에서 [수정]을 선택했을 때 작동하는 글 수정 기능입니다.
기본적으로 형태는 글 입력 폼과 거의 유사하고, PHP 프로그램 부분은 글 내용 보기 기능과 거의 유사합니다.
이미 앞에서 다 살펴 보았던 것이니만큼 비교적 쉽게 이해가 될 것입니다.
우선 소스를 주~욱 살펴 보시기 바랍니다.
- <?
- //DB에 연결하는 부분입니다. 항상 반복되는 부분이니 꼭 암기!!!
- mysql_connect(“localhost”, “phpbbs”, “phpbbs”) or die (mysql_error());
- mysql_select_db(“itmembers”);
- //변수 설정합니다.
- $tablename=”bbs”; //테이블 이름
- //테이블에서 글을 가져옵니다.
- $query = “select * from $tablename where number=’$number'”; // 글 번호를 가지고 조회를 합니다.
- $result = mysql_query($query) or die (mysql_error());
- $array = mysql_fetch_array($result);
- //백슬래쉬 제거, 특수문자 변환(HTML용), 개행(<br>)처리 등
- $array[name] = stripslashes($array[name]);
- $array[subject] = stripslashes($array[subject]);
- $array[memo] = stripslashes($array[memo]);
- //$array[subject] = htmlspecialchars($array[subject]);
- //$array[memo] = htmlspecialchars($array[memo]);
- //$array[memo] = nl2br($array[memo]);
- ?>
- <html>
- <head>
- <title>PHP 게시판 프로젝트 – 수정</title>
- <STYLE TYPE=”text/css”>
- BODY,TD,SELECT,input,DIV,form,TEXTAREA,center,option,pre,blockquote {font-family:굴림;font-size:9pt;color:#555555;}
- A:link {color:black;text-decoration:none;}
- A:visited {color:black;text-decoration:none;}
- A:active {color:black;text-decoration:none;}
- A:hover {color:gray;text-decoration:none;}
- </STYLE>
- <script language=”javascript”>
- function check_submit() {
- if (document.myForm.name.value == “”) {
- alert(‘이름을 입력하세요’);
- document.myForm.name.focus();
- return;
- } else if (document.myForm.password.value == “”) {
- alert(‘비밀번호를 입력해야 글을 수정하거나 삭제할 수 있습니다.’);
- document.myForm.password.focus();
- return;
- } else if (document.myForm.subject.value == “”) {
- alert(‘제목을 입력하세요’);
- document.myForm.subject.focus();
- return;
- } else if (document.myForm.memo.value == “”) {
- alert(‘내용을 입력하세요’);
- document.myForm.memo.focus();
- return;
- } else {
- document.myForm.action = “modify_ok.php“;
- document.myForm.submit();
- }
- }
- </script>
- </head>
- <body bgcolor=white background=./images/body_bg.gif>
- <img src=./images/maintitle.gif>
- <br>
- <form name=’myForm’ method=’post’ >
- <input type=hidden name=page value='<? echo $page; ?>’>
- <input type=hidden name=number value='<? echo $number; ?>’>
- <table border=0 cellspacing=1 cellpadding=0 width=670>
- <tr>
- <td align=center>
- <font color=green><b>글 수정 화면입니다.</b></font>
- </td>
- </tr>
- </table>
- <table border=0 bgcolor=#CCCCF><tr><td>
- <table border=0 width=670 cellspacing=0 cellpadding=0 bgcolor=#F0F0F0>
- <col width=100></col><col width=></col>
- <tr>
- <td colspan=2>
- <table border=0 cellspacing=0 cellpadding=0 width=100%>
- <tr>
- <td width=100 align=right><b>이름 </b></td>
- <td><input type=text name=name size=20 maxlength=20 value= ‘<? echo $array[name]; ?>’></td>
- <td width=100 align=right><b>비밀번호 </b></td>
- <td><input type=password name=password size=20 maxlength=20 value=”></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr><td bgcolor=white height=1 colspan=2></td></tr>
- <tr>
- <td align=right><b>전자우편 </b></td>
- <td> <input type=text name=email size=40 maxlength=200 value='<? echo $array[email];
?>’> </td> - </tr>
- <tr><td bgcolor=white height=1 colspan=2></td></tr>
- <tr>
- <td align=right><b>홈페이지 </b></td>
- <td> <input type=text name=homepage size=40 maxlength=200 value='<? echo $array[homepage]; ?>’> </td>
- </tr>
- <tr><td bgcolor=white height=1 colspan=2></td></tr>
- <tr>
- <td align=right><b>제목 </b></td>
- <td> <input type=text name=subject size=87 maxlength=200 value='<? echo $array[subject];
?>’> </td> - </tr>
- <tr><td bgcolor=white height=1 colspan=2></td></tr>
- <tr>
- <td align=right><b>내용 </b></td>
- <td valign=top>
- <textarea name=memo cols=85 rows=20> <? echo $array[memo]; ?> </textarea>
- </td>
- </tr>
- </table>
- <br>
- <table border=0 width=670>
- <tr><td>
- <center>
- <a href=”javascript:check_submit();”><img src=’./images/write.gif’ border=0></a>
- <a href=”list.php?page=<? echo $page ; ?>“><img src=./images/list.gif border=0></a>
- </center>
- </td></tr>
- </table>
- </td></tr></table>
- </form>
- </body>
- </html>
[해설]
글 입력 폼인 write.php와 크게 다르지 않아 코드를 이해하기 그리 어렵지 않을 것입니다.
- document.myForm.action = “modify_ok.php“;modify.php는 글 수정 폼입니다. 여기서 수정한 내용이 실제 DB에 반영되기 위해서 modify_ok.php를 실행하기 위한 코드입니다.
이미 앞서 글 입력 코드에서 다룬 바 있어서 부연 설명하지는 않겠습니다. - <input type=hidden name=page value='<? echo $page; ?>’>
- <input type=hidden name=number value='<? echo $number; ?>’> modify.php에서 수정한 내용을 반영하기 위해 modify_ok.php를 실행한다고 했죠? modify_ok.php로 수정된 내용을 넘길 때 현재의 목록 페이지와 현재 글 번호를 함께 넘기기 위해 위와 같이 숨김 속성의 입력 폼을 만드는 것입니다.
- <form name=’myForm’ method=’post’ > 에서 post 속성으로 값을 넘기도록 설정한 거 기억나죠? post 형식으로 넘길 때 현재 페이지와 글 번호를 함께 넘기려고 하는데 따로 입력받는 곳이 없으니까 이렇게 숨김 속성으로 input 폼을 만들고 기본 값으로 현재 페이지와 글 번호를 저장하는 겁니다.
- <input type=text name=name size=20 maxlength=20 value= ‘<? echo $array[name]; ?>’>modify.php가 write.php와 결정적으로 다른 곳이 바로 이런 부분들입니다. 기본값을 보여주는 value 속성이 있습니다.
이미 DB에 저장된 내용 중 해당 항목을 미리 보여주고 수정할 부분만 수정하도록 하고 있습니다.그 외 부분은 write.php와 거의 동일합니다. - <textarea name=memo cols=85 rows=20> <? echo $array[memo]; ?> </textarea>textarea는 value 속성을 사용하지 않습니다. <textarea>와 </textarea> 사이에 기본 값을 표시하면 됩니다.
- <a href=”list.php?page=<? echo $page ; ?>“><img src=./images/list.gif border=0></a>
목록 보기 버튼을 눌렀을 때 현재 페이지 번호 값을 가지고 list.php를 실행하기 위한 코드입니다.
어떻습니까?
이미 앞서 write.php와 view.php, list.php 코드를 이해하셨다면 별 무리없이 쉽게 이해할 수 있겠죠?
이상, 21세기 첫 대통령 뽑는날, 동주아빠 손병목이었습니다.
