MYSQL과 PHP를 이용한 방명록 만들기
방명록 테이블 설계
항목 |
내용 |
id |
글번호 키 |
name |
글쓴이의 이름 |
pass |
글쓴이의 비밀번호 |
content |
글의 내용 |
wdate |
글이 등록된 날짜와 시간 |
sql구문
CREATE TABLE guestbook (
idint(11) UNSIGNED NOT NULL AUTO_INCREMENT,
namevarchar(20) NOT NULL,
passvarchar(20) NOT NULL,
contenttextNOT NULL,
wdatetimestampNOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=euckr;
테이블 접근 계정 추가 구문 php_brain 대신에 데이터베이스명 쓰면됨.
grant all privileges on php_brain.guestbook to 'webauth' identified by 'webauth';
flush privileges;
위 구문은 모든 권한을 webauth라는 ID와 webauth라는 비번을 쓰는 사람에게 줌.
grant select on php_brain.* to 'webauth' identified by 'webauth';
flush privileges;
위 구문은 select 권한을 webauth라는 ID와 webauth라는 비번을 쓰는 사람에게 줌.
MySQL 워크벤치에서 실행한 화면
list.php 파일
<?
$conn = mysql_connect("localhost", "webauth", "webauth") or die(mysql_error());
@mysql_select_db("php_brain", $conn);//데이터베이스 이름
mysql_query("set names euckr");
$query = "SELECT * FROM guestbook ORDER BY id DESC";
$result = mysql_query($query, $conn);
$total = mysql_affected_rows();//쿼리의 결과가 몇개인지 확인함
$pagesize=5;
?>
<FORMACTION="insert.php" METHOD="POST">
<TABLEBORDER=1 WIDTH=500>
<TR>
<TD>이름</TD><TD><INPUT TYPE="TEXT" NAME="name"></TD>
<TD>비밀번호</TD><TD><INPUT TYPE="PASSWORD" NAME="pass"></TD>
</TR>
<TR>
<TDCOLSPAN=4><TEXTAREA NAME="content" COLS=65 ROWS=5></TEXTAREA></TD>
</TR>
<TR>
<TDCOLSPAN=4 align=right><INPUT TYPE="SUBMIT" VALUE=" 확인 "></TD>
</TR>
</TABLE>
</FORM>
<BR>
<?
for($i=$_GET[no] ; $i < $_GET[no]+$pagesize ; $i++) {
if ($i < $total)
{
mysql_data_seek($result,$i);//result에 지정한 MYSQL 결과의 내부 행 포인터를 지정한 행번호로 옮깁니다.
$row = mysql_fetch_array($result);
?>
<TABLEWIDTH=500 BORDER=1>
<TR>
<TD>No.<?=$row[id]?></TD>
<TD><?=$row[name]?></TD>
<TD>(<?=$row[wdate]?>)</TD>
<TD><ahref="delete.php?id=<?=$row[id]?>">del</a></TD>
</TR>
<TR>
<TDCOLSPAN=4><?=$row[content]?></TD>
</TR>
</TABLE>
<?
} //end if
} //end for
$prev = $_GET[no] - $pagesize ; // 이전 페이지는 시작 글에서 $scale을 뺀 값부터
$next = $_GET[no] + $pagesize ; // 다음 페이지는 시작 글에서 $scale을 더한 값부터
if ($prev >= 0) {//음수면 페이지가 존재하지않음
echo"<a href='{$_SERVER['PHP_SELF']}?no=$prev'>이전</a>";
}
if ($next < $total) {
echo"<a href='{$_SERVER['PHP_SELF']}?no=$next'>다음</a></center>";
}
?>
동작화면
insert.php
<?
$conn = mysql_connect("localhost", "webauth", "webauth") or die(mysql_error());
if(!$conn) {
echo"Cannot connect to database.";
exit;
}
@mysql_select_db("php_brain", $conn);
mysql_query("set names euckr", $conn);
//$query = "insert guestbook set name='$_POST[name]', pass='$_POST[pass]', content='$_POST[content]'";
$query = "INSERT INTO guestbook (name, pass, content) ";
$query .= "VALUES ('".$_POST['name']."', '".$_POST['pass']."', '".$_POST['content']."');";
//$query .= "VALUES ('$_POST[name]', '$_POST[pass]', '$_POST[content]')";
//$query .= "VALUES ('$_POST[name]', '$_POST[pass]', '$_POST[content]')";
echo$query;
$result = mysql_query($query, $conn) or die("sql 제대로임?");
if(!$result) {
echo"Cannot connect to result.";
exit;
}
$err_str = mysql_error();#SQL문 오류를 보여주는 명령어
echo$err_str; #포함..
//$query = "SELECT * FROM guestbook ORDER BY id DESC";
//$result = mysql_query($query, $conn);
//echo $result;
?>
<script>
alert("글이 등록되었습니다.");
location.href="list.php";
</script>
동작화면
delete.php 소스
del 버튼을 누르면 list.php에서 id를 넘겨줘서 delete.php로 보낸다.
이 id를 이용해서 데이터베이스를 검색해서 지우게 된다.
<?
if ($_GET['mode']!="delete")
{
?>
<HTML>
<FORMMETHOD="POST"
ACTION="<?=$_SERVER['PHP_SELF']?>?id=<?=$_GET[id]?>&mode=delete">
<TABLE>
<TR>
<TD>비밀번호</TD>
<TD><INPUTTYPE="PASSWORD" NAME="pass"></TD>
<TD><INPUTTYPE="SUBMIT" VALUE=" 확 인 "></TD>
</TR>
</TABLE>
<?
exit;
} //end if
$conn = mysql_connect("localhost", "webauth", "webauth") or die(mysql_error());
@mysql_select_db("php_brain", $conn);
@mysql_query("set names euckr");
$query = "SELECT pass FROM guestbook WHERE id='$_GET[id]'";
$result = mysql_query($query, $conn);
$row = mysql_fetch_array($result);
if ($row[pass] == $_POST[pass])
{
$query = "DELETE FROM guestbook WHERE id='$_GET[id]'";
$result = mysql_query($query, $conn);
}
?>
<script>alert("글이 삭제되었습니다."); location.href="list.php"; </script>
동작화면
출처 : http://brown.ezphp.net/85
'프로그래밍 > PHP' 카테고리의 다른 글
PHP - MYSQL과 PHP를 이용한 게시판 속도 업그레이드 두번째 (0) | 2014.06.22 |
---|---|
PHP - MYSQL과 PHP를 이용한 게시판 속도 업그레이드 (0) | 2014.06.22 |
PHP - MYSQL과 PHP를 이용한 계층형 게시판 만들기 (6) | 2014.06.10 |
PHP - MYSQL과 PHP를 이용한 간단한 게시판 만들기 (55) | 2014.06.08 |
PHP - mysql_error 함수 (0) | 2014.06.05 |
[php] get방식을 이용한 변수 전달 (0) | 2014.06.05 |
PHP - list() 함수 배열처럼 변수에 할당 (0) | 2014.02.12 |
PHP - isset, unset 함수 (0) | 2014.02.04 |