Posted on : 2002-12-19 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1
0
이 강좌도 ITmembers.net의 다른 강좌와 마찬가지로 ‘재미로’ 한번 웹 프로그래밍의 기초에 대해 알아보자는 취지였습니다.
이를 위해 PHP와 MySQL을 연동하여 간단한 게시판 기능을 구현해봤습니다.
그러나 이 강좌에서 다룬 내용만으로는 실제 웹서비스에 적용하기에는 다소 미흡한 면이 있습니다.
글을 입력하고 수정하고 삭제하는 기능은 있으나 아직 파일 첨부 기능, 답변형 게시판 기능, 관리자 기능 등이 없는 초보적인 형태일 뿐입니다.
물론 PHP 게시판 프로젝트는 여기서 끝나지 않습니다.
1차 프로젝트의 목적이 웹 프로그래밍, DB 연동 등에 대한 초보적인 이해에 있었다면, 2차 프로젝트에서는 위에서 언급한 파일 첨부 기능, 답변형 게시판 구현, 검색 기능 등을 구현해 보도록 하겠습니다.
그동안 업데이트가 늦어졌음에도 격려를 해주신 많은 분들께 진심으로 감사드립니다.

Posted on : 2002-12-01 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1
1
지금까지 4시간에 걸쳐 글 내용 수정과 삭제 관련 소스를 주~욱 훑어 보았습니다.
다음
시간부터 약 3~4회에 걸쳐 소스에 대한 설명을 하겠습니다.
아래는 delete_ok.php 소스입니다.
비밀번호가 맞으면 삭제하고 그렇지 않으면
이전 화면으로 돌아가는, 비교적 간단한 소스입니다.
- <?
- //db 연결 부분입니다.
- mysql_connect("localhost", "phpbbs", "phpbbs")
or die (mysql_error()); //host,id,passwd
- mysql_select_db("itmembers"); //db이름
-
- //변수
- $password = addslashes($password);
- $tablename="bbs"; //테이블 이름
-
- //비밀번호가 맞는지 확인합니다.
- $sql = "select number from $tablename where number=$number and
password=’$password’";
- $result = mysql_query($sql) or die (mysql_error());
-
- $msg = "비밀번호가 틀립니다.";
-
- if(mysql_num_rows($result)) { //반환된 열이 있으면…
- //삭제합니다.
- $sql = "delete
from $tablename where number=$number";
- mysql_query($sql) or
die (mysql_error());
- $msg = "삭제하였습니다.";
- }
-
- //메시지를 출력하고 목록 페이지로 이동합니다.
- echo " <html><head>
- <script
name=javascript>
-
- if(‘$msg’
!= ”) {
- self.window.alert(‘$msg’);
- }
-
- location.href=’list.php?page=$page’;
-
- </script>
- </head>
- </html>
";
- ?>
이상 동주 아빠 손병목이었습니다.

Posted on : 2002-12-01 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1
1
설명은 제31강부터 진행합니다.
아래는 delete.php 소스입니다. (비밀번호를
확인하기 위해 입력받는 폼입니다.)
|
파일명
|
기능
|
|
modify.php
|
글 수정 폼
|
|
modify_ok.php
|
글 수정 DB 처리 부분
|
|
delete.php
|
글 삭제 폼
|
|
delete_ok.php
|
글 삭제 DB 처리 부분
|
- <html>
-
- <head>
- <meta http-equiv="content-type" content="text/html;
charset=euc-kr">
- <title>글 삭제</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.password.value
== "") {
- alert(‘비밀번호를
입력해야 글을 삭제할 수 있습니다.’);
- document.myForm.password.focus();
- return;
-
- } else {
- document.myForm.action
= "delete_ok.php";
- document.myForm.submit();
- }
-
- }
-
- </script>
-
-
- </head>
-
- <body bgcolor="white" text="black" link="blue"
vlink="purple" alink="red">
- <form name="myForm" method="post">
- <input type="hidden" name="page" value="<?
echo $page; ?>">
- <input type="hidden" name="number" value="<?
echo $number; ?>">
-
- <table align="center" border="1" cellspacing="0"
width="200" bordercolordark="white" bordercolorlight="#CCCCCC">
- <tr>
- <td>
- <p
align="center">글 삭제 비밀번호</p>
- </td>
- </tr>
- <tr>
- <td align="center">
- <input
type="password" name="password" maxlength="12"
size="12">
- </td>
- </tr>
- </table>
-
- <p align="center">[<a href="javascript:check_submit();">삭제</a>]
[<a href="javascript:history.go(-1)">취소</a>]</p>
- </form>
- </body>
-
- </html>
Posted on : 2002-12-01 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1
0
설명은 제31강부터 진행하겠습니다.
| 파일명 |
기능 |
| modify.php |
글 수정 폼 |
| modify_ok.php |
글 수정 DB 처리 부분 |
| delete.php |
글 삭제 폼 |
| delete_ok.php |
글 삭제 DB 처리 부분 |
우선 소스를 주~욱 살펴 보시기 바랍니다.
- <?
- //db 연결 부분입니다.
- mysql_connect(“localhost”, “phpbbs”, “phpbbs”) or die (mysql_error()); //host,id,passwd
- mysql_select_db(“itmembers”); //db이름
-
- //수정폼(modify.php)에서 전송된 내용을 변수에 담습니다.
- $name = addslashes($name);
- $password = addslashes($password);
- $email = addslashes($email);
- $homepage = addslashes($homepage);
- $subject = addslashes($subject);
- $memo = addslashes($memo);
-
- //디폴트 값이 필요한 변수에는 디폴트 값을 넣습니다.
- $tablename=”bbs”; //테이블 이름
- $writetime = time();
- //$ip = getenv(“REMOTE_ADDR”);
-
- //비밀번호가 맞는지 확인합니다.
- $sql = “select number from $tablename where number=$number and password=’$password’“;
- $result = mysql_query($sql) or die (mysql_error());
-
- if(mysql_num_rows($result)) { //반환된 열이 있으면…
- //수정한 내용을 UPDATE합니다.
- $sql = “update $tablename set
- name=’$name’,email=’$email’,homepage=’$homepage’,
- subject=’$subject’,memo=’$memo’ where number=$number“;
- mysql_query($sql) or die (mysql_error());
- $msg = “수정을 하였습니다.”;
-
- echo ” <html><head>
- <script name=javascript>
-
- if(‘$msg’ != ”) {
- self.window.alert(‘$msg’);
- }
-
- location.href=’list.php?page=$page’;
-
- </script>
- </head>
- </html> “;
-
- } else {
- $msg = “비밀번호가 틀립니다.”;
- echo ” <html><head>
- <script name=javascript>
-
- if(‘$msg’ != ”) {
- self.window.alert(‘$msg’);
- }
-
- history.go(-1);
-
- </script>
- </head>
- </html> “;
-
- }
-
-
- ?>
[해설]
이 부분 역시 앞서 insert.php와 크게 다르지 않아 코드를 이해하기 그리 어렵지 않을 것입니다.
단지 다른 점이라고는 SQL 쿼리문이, insert.php에서 INSERT문을 쓴데 반해 여기서는 UPDATE문을 사용한다는 것입니다. 글을 새로 입력하는 것과 수정하는 것이니, 당연한 말이겠죠….
아래 코드에서 SQL 쿼리문의 뜻만 이해하면 됩니다.
- $sql = “select number from $tablename where number=$number and password=’$password’“;
- $result = mysql_query($sql) or die (mysql_error());
-
- if(mysql_num_rows($result)) { //반환된 열이 있으면…
- //수정한 내용을 UPDATE합니다.
- $sql = “update $tablename set
- name=’$name’,email=’$email’,homepage=’$homepage’,
- subject=’$subject’,memo=’$memo’ where number=$number“;먼저 20행에서 현재 글번호와 패스워드를 비교하여 DB에 저장된 해당 글번호의 패스워드와 일치하는지 알아보기 위한 쿼리문을 정의합니다.
21행에서 쿼리문을 실행합니다.
23행은, 쿼리의 결과가 있으면 24행부터 실행하라는 의미입니다. 없다면? 비밀번호가 틀리다고 메시지를 보이고 전 화면으로 이동하게 되는 거죠. (코드 44행부터입니다.)25~27행의 쿼리문은 modify.php에서 넘어온 값들을 DB에 원래 저장된 내용에 덮어쓰는 기능을 합니다.나머지 이해가 안되는 부분이 있으면 insert.php 코드를 해설해 놓은 강좌를 보시면 됩니다.
이상, 21세기 첫 대통령 뽑는날, 동주가 잠든 틈을 타 모래 글을 쓰는 저는,
동주아빠 손병목입니다.

Posted on : 2002-12-01 | By : SON BYOUNGMOK | In : PHP 게시판 만들기 1
0
이번 시간부터는 글 내용 수정, 삭제에 대해 다루겠습니다.
먼저 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세기 첫 대통령 뽑는날, 동주아빠 손병목이었습니다.
