프로그래밍/PHP

PHP - MYSQL과 PHP를 이용한 방명록 만들기

가카리 2014. 6. 5. 20:52
반응형

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





반응형