PHP 프로그래밍

본문 바로가기
사이트 내 전체검색


Web Programming >> PHP Programming
[목차]
제10장 메모장 만들기(MySQL)

    1. MySQL을 이용한 메모장 프로그램

 

1. Table 만들기

파일명 : memo.sql

CREATE TABLE memo (

num     int not null default '0' auto_increment,

writer  varchar(20),

memo    varchar(255),

regtime datetime,

primary key(num)); 

# mysql -u php -p sample < memo.sql

 

2. 목록보기(list.html)

 

<HTML>

<HEAD>

<TITLE>메모장</TITLE>

</HEAD>

<BODY>

<CENTER>

<BR><FONT SIZE=6 FACE='Comic Sans MS'>메모장</FONT>

<TABLE WIDTH=600 CELLSPACING=1 CELLPADDING=1 BGCOLOR=6b7bad>

<TR>

        <TD ALIGN=CENTER WIDTH=60><FONT SIZE=2 COLOR=WHITE>

        번호</TD>

        <TD ALIGN=CENTER WIDTH=100><FONT SIZE=2 COLOR=WHITE>

        작성자</TD>

        <TD ALIGN=CENTER WIDTH=440><FONT SIZE=2 COLOR=WHITE>

        내용</TD>

</TR>

<?

$connect = Mysql_connect("localhost","php","php99");

mysql_select_db("sample",$connect);

 

$query = "SELECT * FROM memo ORDER BY num DESC";

$result = mysql_query($query,$connect);

while($row = mysql_fetch_array($result))

{

//        $row[regtime] = substr($row[regtime],11,8);

        echo "

<TR BGCOLOR=ghostwhite>

        <TD ALIGN=CENTER><FONT SIZE=2>$row[num]</TD>

        <TD ALIGN=CENTER><FONT SIZE=2>$row[writer]</TD>

        <TD><FONT SIZE=2>$row[memo] - <FONT COLOR=RED>$row[regtime]</TD>

</TR>";

}

?>

</TABLE>

<BR>

<TABLE WIDTH=600 CELLSPACING=1 CELLPADDING=1 BGCOLOR=6b7bad>

<FORM METHOD=POST ACTION=post.html>

<TR BGCOLOR=ghostwhite>

        <TD ALIGN=CENTER><FONT SIZE=2>

        작성자 : <INPUT TYPE=TEXT NAME=writer SIZE=10> &nbsp;&nbsp;

        <INPUT TYPE=TEXT NAME=memo SIZE=40> &nbsp;&nbsp;

        <INPUT TYPE=SUBMIT VALUE='메모남기기'>

</TR>

</FORM>

</TABLE>

</BODY>

</HTML>

 

 

 

3. 글쓰기 처리(post.html)

<?

$connect = Mysql_connect("localhost","php","php99");

mysql_select_db("sample",$connect);

 

$query="INSERT INTO memo(writer,memo,regtime) VALUES

        ('$writer','$memo',NOW())";

mysql_query($query,$connect);

 

echo "<SCRIPT>location.replace('list.html');</SCRIPT>";

?>

 

 

 

4. 목록보기(list.html) 수정 - 페이지 이동 기능

 

<?

########### 한 페이지당 출력할 게시물의 수

$num_per_page = 5;

 

########### 게시물 출력목록 하단에 링크를 걸 페이지의 개수

$page_per_block = 5;

 

########### 페이지 초기화

if(!$page) {

                $page = 1;

}

 

########## 데이터베이스 서버에 연결한다. ##########

$dbconn = mysql_connect("localhost","php","php99") or die("DB서버 연결에 실패하였습니다!");

  

########## 작업 데이터베이스로 sample을 선택한다. ##########

$status = mysql_select_db("sample",$dbconn);

if(!$status) {

   $errNO = mysql_errno($dbconn);

   $errMSG = mysql_error($dbconn);

    

   echo("서버의 sample 데이터베이스연결에 실패하였습니다!<br>");

   echo("에러코드 $errNO : $errMSG<br>");

   exit;

}

 

$query = "SELECT * FROM memo ORDER BY num DESC";

$result = mysql_query($query,$dbconn);

if(!$result) {

   $errNO = mysql_errno($dbconn);

   $errMSG = mysql_error($dbconn);

       

   echo("에러코드 $errNO : $errMSG<br>");

   exit;

}

  

$total_record = mysql_num_rows($result);

 

########## 현재의 페이지에서 출력할 게시물의 범위를 결정한다. ##########

if(!$total_record) {

   $first = 1;

   $last = 0;   

} else {

   $first = $num_per_page*($page-1);

   $last = $num_per_page*$page;

 

   $IsNext = $total_record - $last;

   if($IsNext > 0) {

      $last -= 1;

   } else {

      $last = $total_record - 1;

   }      

}

 

########## 전체 페이지수를 계산한다. ##########

$total_page = ceil($total_record/$num_per_page);

 

?>

<HTML>

<HEAD>

<TITLE>메모장</TITLE>

</HEAD>

<BODY>

<CENTER>

<BR><FONT SIZE=6 FACE='Comic Sans MS'>메모장</FONT>

<TABLE WIDTH=600 CELLSPACING=1 CELLPADDING=1 BGCOLOR=6b7bad>

<TR>

        <TD ALIGN=CENTER WIDTH=60><FONT SIZE=2 COLOR=WHITE>

        번호</TD>

        <TD ALIGN=CENTER WIDTH=100><FONT SIZE=2 COLOR=WHITE>

        작성자</TD>

        <TD ALIGN=CENTER WIDTH=440><FONT SIZE=2 COLOR=WHITE>

        내용</TD>

</TR>

<?

########## 게시물의 가상번호(게시물의 개수에 따른 일련번호) ##########

$article_num = $total_record - $num_per_page*($page-1);

 

########## 테이블내 모든 레코드의 각 데이터 값을 각각의 변수에 저장하여 출력한다. ##########

for($i = $first; $i <= $last; $i++) {

   $my_num = mysql_result($result,$i,0);

   $my_writer = mysql_result($result,$i,1);

   $my_memo = mysql_result($result,$i,2);

   $my_regtime = mysql_result($result,$i,3);

 

        echo "

<TR BGCOLOR=ghostwhite>

        <TD ALIGN=CENTER><FONT SIZE=2>$my_num </TD>

        <TD ALIGN=CENTER><FONT SIZE=2>$my_writer </TD>

        <TD><FONT SIZE=2>$my_memo - <FONT COLOR=RED>$my_regtime </TD>

</TR>";

}

?>

</TABLE>

<BR>

<table width="600" border="0" cellspacing="0" cellpadding="0" align="center">

<tr>

   <td colspan="6" align="center">

<?

########## 게시물 목록 하단의 각 페이지로 직접 이동할 수 있는 페이지링크에 대한 설정을 한다. $total_block = ceil($total_page/$page_per_block);

$block = ceil($page/$page_per_block);

 

$first_page = ($block-1)*$page_per_block;

$last_page = $block*$page_per_block;

 

if($total_block <= $block) {

   $last_page = $total_page;

}

 

########## 이전페이지블록에 대한 페이지 링크 ##########

if($block > 1) {

   $my_page = $first_page;

   echo("<font size=2><a href=\"$php_self?page=$my_page\" >[이전 ${page_per_block}개]</a></font>");

}

 

########## 현재의 페이지 블럭범위내에서 각 페이지로 바로 이동할 수 있는 하이퍼링크를 출력한다.

for($direct_page = $first_page+1; $direct_page <= $last_page; $direct_page++) {

   if($page == $direct_page) {

      echo("<font size=2><b>[$direct_page]</b></font>");

   } else {

      echo("<font size=2><a href=\"list.html?page=$direct_page\">[$direct_page]</a></font>");

   }

}

 

########## 다음페이지블록에 대한 페이지 링크 ##########

if($block < $total_block) {

   $my_page = $last_page+1;

   echo("<font size=2><a href=\"list.html?page=$my_page\">[다음 ${page_per_block}개]</a></font>");

}

?>   

   </td>

</tr>

</table>

 

<table width="600" border="0" cellspacing="0" cellpadding="0" align="center">

<tr>

   <td align="left">

   <a href="list.html">목록</a>

   </td>

   <td align="right">

<?

########## 이전페이지가 존재할 경우 이전페이지로 가는 링크를 활성화시킨다.

if ($page > 1) {

   $page_num = $page - 1;

   echo("<a href=\"list.html?page=$page_num\">이전</a> | ");

} else {

   echo("이전 | ");

}

 

########## 게시물이 다음페이지에도 존재할 경우 다음페이지로 가는 링크를 활성화시킨다.

if ($IsNext > 0) {

   $page_num = $page + 1;   

   echo("<a href=\"list.html?page=$page_num\">다음</a></td>");

} else {

   echo("다음</td>");

}

?>

 

</tr>

</table>

<?

mysql_close();

?>

<br>

<TABLE WIDTH=600 CELLSPACING=1 CELLPADDING=1 BGCOLOR=6b7bad>

<FORM METHOD=POST ACTION=post.html>

<TR BGCOLOR=ghostwhite>

        <TD ALIGN=CENTER><FONT SIZE=2>

        작성자 : <INPUT TYPE=TEXT NAME=writer SIZE=10> &nbsp;&nbsp;

        <INPUT TYPE=TEXT NAME=memo SIZE=40> &nbsp;&nbsp;

        <INPUT TYPE=SUBMIT VALUE='메모남기기'>

</TR>

</FORM>

</TABLE>

</BODY>

</HTML>

 

 

 

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.