13장 공지사항 한빛미디어(주).

Slides:



Advertisements
Similar presentations
XHTML Basic 제 13 장 1. XHTML Basic의 개요 2. XHTML Basic 기본 문법 3. 표 만들기
Advertisements

CHAPTER 15. JSP.
10장 회원 가입과 로그인 한빛미디어(주).
09장 실습 웹 사이트 소개와 회원가입 페이지 제작.
웹 프로그래밍 HTML, 자바스크립트, ASP를 중심으로
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
PHP programming 2000년 11월 13일 데이터베이스 연구실 김호숙.
HTML과 CGI 프로그래밍 PHP 웹 프로그래밍 (PHP Web Programming) 문양세
예방접종 정보 SITE.
MySQL API에서는 MySQL 내장 함수를 제공한다.
MySQL 연동 PHP 프로그래밍 기초 순천향대학교 정보기술공학부 이상정.
예제모음.
웹 해킹 기초와 실습.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 빈을 이용한 회원가입 양식 작성하기 빈 작성
11장 방명록 한빛미디어(주).
8장 쿠키와 세션.
Project No 김현수 최종 작성일 :
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
JDBC 프로그래밍 이수지 이동주 1.
9장. 요청 흐름제어와 모듈화 #1: <jsp:forward> 액션태그 사용
13장. 자바빈과 데이터베이스를 연동한 게시판 시스템
Web Server와 DB 연동.
6장 Mysql 명령어 한빛미디어(주).
MVC 기반 게시판 작성 Youbok Choi.
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
14장 질의응답 한빛미디어(주).
5장 Mysql 데이터베이스 한빛미디어(주).
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
학습목표 학습목차 Table 태그를 이용하여 표 만들기를 이해할 수 있습니다.
ASP.NET : Database 접근 2008 컴퓨터공학실험(Ⅰ)
홈페이지 만들기 HTML HyperText Markup Language 홈페이지를 만들 때 사용하는 언어
영단어 학습 사이트.
07장. <TABLE> 태그로 표 디자인하기
5. JSP의 내장객체1.
16장 설문조사 한빛미디어(주).
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
KHS JDBC Programming 4 KHS
5장 Mysql 데이터베이스 한빛미디어(주).
DB연동하기 원격db접속.
You YoungSEok Oracle 설치 You YoungSEok
HTML.
CHAP 13. 방명록 만들기 실습.
게임웹사이트운영 [10] 폼 작성.
Chapter11 웹 스토리지 & 웹 데이터베이스
9장 웹 사이트 초기 화면 제작 한빛미디어(주).
2015학년도 PHP 기말 레포트 로그인 홈페이지 제작.
JSP Programming with a Workbook
15장 자료실 한빛미디어(주).
Data Base Web Programming
8장 쿠키와 세션 한빛미디어(주).
08장 쿠키와 세션.
12장 자유게시판 한빛미디어(주).
17장 웹 사이트 제작 완성 한빛미디어(주).
ASP 수행 화면(1).
CHAP 21. 전화, SMS, 주소록.
문성우 SQL 실습 Part Ⅰ 문성우.
세션 (Session) Yang-Sae Moon Department of Computer Science
13장 자바빈과 데이터베이스를 연동한 게시판 시스템
자바빈/커넥션 풀/세션을 사용한 Ajax 기반의 게시판 시스템
Chapter 10 데이터 검색1.
HTML HTML 기본 구조와 태그 다양한 태그 다루기
maria db JDBC PROGRAMMING 5
Data Base Web Programming
웹과 모바일 홈페이지의 이해와 제작 [PHP / MYSQL] 게시판 만들기
Data Base Mysql.
 6장. SQL 쿼리.
Presentation transcript:

13장 공지사항 한빛미디어(주)

학습 목표 공지사항 게시판의 동작 기능을 이해한다 공지사항의 게시판 DB 테이블과 리플 DB 테이블의 구조를 이해한다 관리자만이 글쓰기, 글 삭제, 글 수정을 할 수 있는 방법을 익힌다. 리플을 DB 테이블에 저장하는 방법을 익힌다 리플을 DB 테이블에서 삭제하는 방법을 익힌다 리플을 화면에 출력하는 방법을 익힌다

주요 학습 내용 01. 공지사항 파일목록 및 DB 테이블 02. 목록 보기 03. 글쓰기 04. 글 내용 보기 05. 글 수정 및 삭제 06. 리플 글 삽입 및 삭제

공지사항 주요 기능 01 ⑴ 관리자(아이디:"admin") 로그인 상태에서만 공지사항 글쓰기/수정/삭제 가능 ⑵ 관리자가 아닌 경우에는 화면에 글쓰기/수정/삭제 버튼 표시 안함 ⑶ 로그인된 회원들만이 공지사항 글에 리플 달기 가능 ⑷ 글 목록보기 화면의 제목에 리플 개수 표시

공지사항 미리 보기 02 글쓰기는 “admin” 아이디를 만들어서 로그인 해야 가능함.

공지사항 파일 목록 03 파일명 설명 notice_board.sql 공지사항 DB 테이블 생성 명령 notice_ripple.sql 리플 저장을 위한 DB 테이블 생성 명령 list.php 공지사항 목록 보기 insert.php 공지사항 글을 DB에 저장 insert_ripple.php 리플을 DB에 저장 delete.php 게시판 글을 DB에서 삭제 delete_ripple.php 리플을 DB에서 삭제 modify_form.php 공지사항 글 수정 양식 modify.php 공지사항 글을 DB에서 수정 search.php 특정 문자열로 검색된 게시판 글 목록 view.php 글 내용 보기 write_form.php 공지사항 글쓰기 양식 [표 13-1] 공지사항 게시판에 사용되는 파일 목록

공지사항 프로그램 설치 04 ⑴ 작업 폴더(“www" 폴더) 밑에 “notice" 폴더를 만들고 생성된 “notice" 폴더 밑에 교재 뒤 CD의 “www\notice" 폴더에 있는 파일들과 "img" 디렉토리를 통째로 복사한다. ⑵ 공지사항 DB 테이블은 두개 이다. - 게시판 DB 테이블 - 리플 DB 테이블

not null, auto_increment, 공지사항 게시판 DB 테이블 05 필드 이름 타입 추가 사항 필드 설명 num int not null, auto_increment, primary key 일렬 번호 id varchar(10) not null 아이디 name 이름 subject varchar(100) 제목 content text 글 내용 regist_day varchar(20)   글 쓴 날짜 hit 조회수 ip 접속 IP [표 13-2] 공지사항 게시판 DB 테이블 (테이블 명 : notice_board)

자유게시판 DB 테이블 만들기 06 메모장으로 다음을 타이핑한 다음 “c:\mysql\bin” 폴더 밑에 “notice_board.sql”이름으로 저장  CREATE TABLE notice_board (        num int not null auto_increment,        id varchar(10) not null,        name varchar(10) not null,        subject varchar(100) not null,        content text not null,        regist_day varchar(20),        hit int,        ip varchar(20),        PRIMARY KEY (num)   ); 명령 프롬프트에서 다음을 실행  C:\mysql\bin> mysql -uphp5 -p1234 php5_db < notice_board.sql

not null, auto_increment, 공지사항 리플 DB 테이블 07 필드 이름 타입 추가 사항 필드 설명 num int not null, auto_increment, primary key 일렬 번호 parent not null 리플의 부모 글 id varchar(10) 아이디 name varchar(20) 이름 content text 리플 내용 regist_day   리플 단 날짜 ip 접속 IP [표 13-3] 리플 DB 테이블 (테이블 명 : notice_ripple)

공지사항 리플 DB 테이블 만들기 08 메모장으로 다음을 타이핑한 다음 “c:\mysql\bin” 폴더 밑에 “notice_ripple.sql”이름으로 저장  CREATE TABLE notice_ripple (        num int not null auto_increment,        parent int not null,        id varchar(10) not null,        name varchar(10) not null,        content text not null,        regist_day varchar(20),        ip varchar(20),        PRIMARY KEY (num)  ); 명령 프롬프트에서 다음을 실행  C:\mysql\bin> mysql -uphp5 -p1234 php5_db < notice_ripple.sql

【예제 13-1】list.php 02 공지사항 목록 보기 59 : $start = ($page - 1) * $scale;  61 :    $number = $total_record - $start;  63 :   for ($i=$start; $i<$start+$scale && $i < $total_record; $i++)    64 :    {  65 :       mysql_data_seek($result, $i);   // 가져올 레코드로 포인터 이동   66 :       $row = mysql_fetch_array($result);       // 하나의 레코드 가져오기  68 :       $day = substr($row[regist_day], 0, 10);  69 :  70 :       $sql = "select * from notice_ripple where parent = '$row[num]'";  72 :       $result2 = mysql_query($sql, $connect);  73 :       $num_ripple = mysql_num_rows($result2);  75 :       echo " <tr height=25>  77 :           <td align=center>$number</td>  78 :           <td><img src='img/record_id.gif' border=0>  79 :    <a href='view.php?num=$row[num]&page=$page'>$row[subject]  80 :            ";

【예제 13-1】list.php 02  81 :       if ($num_ripple) echo " <font color=blue>[$num_ripple]</font>";  82 :       echo "  83 :             </a></td>  84 :           <td align=center>$day</td>  85 :           <td align=center>$row[hit]</td>  86 :           <td align=center>$row[name] </td>  87 :         </tr>  88 :         <tr bgcolor='#CCCCCC' height=1>  89 :           <td colspan='5'></td>  90 :         </tr>  91 :            ";  92 :    $number--;  93 :    }

substr( ) 함수 09 <? $str1 = substr ("abcdef", 1); // "bcdef" 을 반환한다. string substr ( string string, int start [, int length])  <?        $str1 = substr ("abcdef", 1);    // "bcdef" 을 반환한다.        $str2 = substr ("abcdef", 2, 3); // "cde" 을 반환한다.        /* 만약 start가 음수라면, 반환되는 문자열은 string의 끝에서부터           start 번째 부터 시작하는 문자열이 된다. */        $str3 = substr ("abcdef", -1); // "f" 를 반환        $str4 = substr ("abcdef", -4); // "cdef" 를 반환        $str5 = substr ("abcdef", -3, 1); // "d" 를 반환        echo $str1." ".$str2." ".$str3." ".$str4." ".$str5."<br>";   ?>

【예제 13-2】write_form.php 02 글쓰기 폼 양식 1 : <? 2 : session_start();  1 : <?  2 :    session_start();  4 :    if ($userid != "admin")  5 :    {   echo("  7 :            <script>  8 :              window.alert('관리자만 글을 쓸 수 있습니다.')  9 :              history.go(-1)  10 :            </script>  11 :          ");           exit;  13 :    }  14 :    else  15 :    {  16 : ?>  17 : <html>  18 :  <head>

【예제 13-2】write_form.php 02  39 :     <table width='100%' border=0 cellspacing=0 cellpadding=0 class='txt'>  40 :         <tr height=25>  41 :           <td align=right width=100>이름 </td>  42 :           <td align=left> : <? echo $username ?> </td> </tr>  44 :      </table> </td> </tr>  47 :         <tr height=1 bgcolor=#5AB2C8><td colspan=2></td></tr>  48 :         <tr bgcolor='#D2EAF0' height=20>  49 :           <td colspan=2>  <b>하고 싶은 말을 남기세요.</b></td> </tr>         51 :         <tr height=1 bgcolor=#5AB2C8><td colspan=5></td></tr>   52 :         <tr><td colspan=2>  54 :     <table width='100%' border=0 cellspacing=0 cellpadding=0  55 :         <tr> <td height=25>  제목     57 :              <input style='font-size:9pt;border:1px solid' type='text'  58 :                      name='subject' size=50 maxlength=100></td>

【예제 13-2】write_form.php 02 // 중간 생략  71 :         <tr height=1 bgcolor=#5AB2C8><td></td></tr>  72 :         <tr>  73 :           <td height=30 align=center valign=top bgcolor='FFFFFF'><br>  75 :            <input type=image src='img/i_write.gif' align=absmiddle border=0>  76 :                <a href='list.php'><img style='cursor:hand'  77 :                 src='img/i_list.gif' align=absmiddle border=0 ></a></td>  78 :         </tr></table> </td> </tr>  82 :     </table> </td> <tr>  85 :        </form>  86 :     </table>  87 :   </body>  88 : </html>  89 :  90 : <?  91 :     }  92 : ?>

【예제 13-3】insert.php 02 글 쓴 내용 DB 저장 1 : <? 2 : session_start();  1 : <?  2 :    session_start();   // 중간 생략  24 :    include "../dbconn.php";       // dconn.php 파일을 불러옴 26 :    $regist_day = date("Y-m-d (H:i)");  // 현재의 날짜를 저장  27 :    $ip = $REMOTE_ADDR;         // 방문자의 IP 주소를 저장  28 :  29 :    // 레코드 삽입 명령  30 :    $sql = "insert into notice_board(id, name, subject, content, regist_day, hit, ip) ";  31 :    $sql .= "values('$userid', '$username', '$subject', '$content', '$regist_day',  0, '$ip')";     33 :    mysql_query($sql, $connect);  // $sql 에 저장된 명령 실행  35 :    mysql_close();                // DB 연결 끊기  37 :    Header("Location:list.php");  // list.php 로 이동  38 : ?>

【예제 13-4】view.php 02 글내용 보기 1 : <? 2 : session_start(); 3 : ?>  1 : <?  2 :     session_start();  3 : ?>  4 : <html>  5 : <head>  6 : <title>:: PHP 프로그래밍 입문에 오신 것을 환영합니다~~ :: </title>  7 : <link rel="stylesheet" href="../style.css" type="text/css">  8 : </head>  9 :   <body leftmargin="0" topmargin="0" marginwidth="0“ marginheight="0"> // 중간 생략  21 :    <tr height=1 bgcolor=#5AB2C8><td></td></tr>  23 : <?  24 :    include "../dbconn.php";  26 :    $sql = "select * from notice_board where num=$num";  28 :    $result = mysql_query($sql, $connect);

【예제 13-4】view.php 02 29 : $row = mysql_fetch_array($result); 30 :  30 :    31 :    $day = substr($row[regist_day], 0, 10);  32 :   33 :    $content = str_replace("\n", "<br>", $row[content]);  34 :    $content = str_replace(" ", " ", $content);  35 :    $subject = str_replace(" ", " ", $row[subject]);  36 :  37 :    $hit = $row[hit];  38 :    $hit++;  39 :  40 :    $sql = "update notice_board set hit=$hit where num=$num";  41 :    mysql_query($sql, $connect);  42 : ?>  44 :      <tr bgcolor="#D2EAF0" height=35>  45 :      <td>  nbsp;<b><? echo $subject ?></td> </tr>

【예제 13-4】view.php 02  69 :         <tr height=1 bgcolor=#5AB2C8><td></td></tr>  70 :         <tr> <td>  72 : <?  73 :     $sql = "select * from notice_ripple where parent=$num                       order by num desc";  74 :     $result = mysql_query($sql, $connect);  75 :     $num_ripple = mysql_num_rows($result);  77 :     if($num_ripple)  78 :     {  79 :         while ( $row = mysql_fetch_array($result) )  80 :         {  81 :            $ripple_day = $row[regist_day];  82 :            $ripple_day = substr($ripple_day, 5, 5);  83 :  84 :            $ripple_content = str_replace("\n", "<br>", $row[content]);  85 :            $ripple_content = str_replace(" ", " ", $ripple_content);  86 :            $ripple_ip = $row[ip];

【예제 13-4】view.php 02 87 : $ripple_num = $row[num];  88 :            $ripple_id = $row[id];  89 :            $ripple_name = $row[name];  91 :      echo " <table width=100% cellpadding=0>  93 :         <tr height=20>  94 :           <td width=10% align=center> $ripple_name  </td>  95 :           <td width=80%% align=left> $ripple_content</td>  96 :           <td width=10% align=left> $ripple_day  ";  98 :         if ($userid == $ripple_id or $userid=="admin")  99 :        { echo " <a href='delete_ripple.php?num=$num& ripple_num= $ripple_num'>D ";  103 :        }  104 :          echo " </td> </tr> <tr height=1 bgcolor=#5AB2C8>  108 :           <td colspan=3></td> </tr> </table> ";  112 :        }  113 :    }   115 :     mysql_close();  116 : ?>

【예제 13-4】view.php 02 122 : <? 123 : echo "  122 : <?  123 :       echo "  124 :        <form method=post action='insert_ripple.php?num=$num'>  125 :         <table align=center border=0 cellspacing=0 cellpadding=0 width=766>  126 :  <tr><td colspan=2>  이름  : $username                         </td></tr>  127 :           <tr height=5><td colspan=2> </td></tr>  128 :        <tr><td><textarea style='font-size:9pt;border:1px solid‘ name='content'  129 :          style=background-image:url('img/bbs_text_line.gif'); cols=110 rows=4 wrap=virtual></textarea></td>  131 :          <td align=right><input type=image src='img/regist.gif'></td>  132 :           </tr> </table>  136 :       </form>  137 :           ";  138 : ?>

【예제 13-4】view.php 02 145 : <td align=center> 146 : <?  146 : <?  147 :   if ($userid == "admin")  148 :   { echo "  150 :           <a href='modify_form.php?num=$num&page=$page'>  151 :                            <img src='img/i_edit.gif' border=0> </a>  152 :           <a href='delete.php?num=$num&page=$page'>  153 :                            <img src='img/i_del.gif' border=0> </a>  154 :            ";  155 :   }  156 : ?>  157 :          <a href="list.php?page=<? echo $page ?>">                   <img src='img/i_list.gif' border=0>  158 :           </a></td> </tr>  160 :     </table>  161 :   </body>  162 : </html>

【예제 13-5】modify_form.php 02 글 수정 폼 양식 1 : <? 2 : session_start();  1 : <?  2 :    session_start();  4 :    if ($userid != "admin")  5 :    { echo("  7 :            <script>  8 :              window.alert('관리자만 수정할 수 있습니다.')  9 :              history.go(-1)  10 :            </script>  11 :          ");          exit;  13 :    }  14 :    else  15 :    {  17 :       include "../dbconn.php";  18 :       $sql = "select * from notice_board where num=$num";  19 :       $result = mysql_query($sql, $connect);

【예제 13-5】modify_form.php 02 21 : $row = mysql_fetch_array($result);  23 :       $subject = $row[subject];  24 :       $content = $row[content];  25 : ?>  26 : <html>  27 :  <head>  28 :   <title>:: PHP 프로그래밍 입문에 오신 것을 환영합니다~~ ::</title>  29 :  <link rel='stylesheet' href='../style.css' type='text/css'>      30 :  </head>  31 :  <body leftmargin='0' topmargin='0' marginwidth='0‘ marginheight='0'>  32 :  33 :     <table border=0 cellspacing=0 cellpdding=0 width='776‘ align='center'>  34 :   <form name='writeform‘ action='modify.php?num=<? echo $num ?>  35 :        &page=<? echo $page ?>‘ method='post'>

【예제 13-5】modify_form.php 02 54 : <tr height=25>  55 :           <td align=right width=100>이름 </td>  56 :           <td align=left> : <? echo $username ?> </td></tr></table>  59 :           </td>  60 :         </tr>  61 :         <tr height=1 bgcolor=#5AB2C8><td colspan=2></td></tr>  62 :         <tr bgcolor='#D2EAF0' height=20>  63 :  <td colspan=2> <b>하고 싶은 말을 남기세요.</b> </td></tr>         65 :         <tr height=1 bgcolor=#5AB2C8><td colspan=5></td></tr>   69 :         <tr>  70 :           <td height=25>  제목     71 :              <input style='font-size:9pt;border:1px solid' type='text'  72 :                      name='subject' size=50 maxlength=100  73 :                     value='<? echo $subject ?>'></td>  74 :         </tr> // 이하 생략

【예제 13-6】modify.php 02 글 수정 DB 업데이트 1 : <? 2 : session_start();  1 : <?  2 :    session_start();  4 :    if ($userid=="admin")  5 :    { // 중간 생략  26 :       include "../dbconn.php";  28 :       $regist_day = date("Y-m-d (H:i)");  // 현재의 날짜 저장  29 :       $ip = $REMOTE_ADDR;         // 방문자의 IP 주소를 저장  31 :  32 :       $sql = "update notice_board set subject='$subject', ";  33 :       $sql .= "content='$content' where num=$num";  35 :       mysql_query($sql, $connect);  36 :       mysql_close();  37 : } 39 :       Header("Location:list.php?num=$num&page=$page");   40 : ?>

【예제 13-7】delete.php 02 글 삭제 1 : <? 2 : session_start(); 3 :  1 : <?  2 :    session_start();  3 :  4 :    if ($userid == "admin")   5 :    {  6 :       include "../dbconn.php";  7 :  8 :       $sql = "delete from notice_board where num = $num";  9 :       mysql_query($sql, $connect);  10 :       mysql_close();  11 :    }  12 :  13 :    Header("Location:list.php?page=$page");  14 : ?> 세션변수

【예제 13-8】insert_ripple.php 02 리플 글 삽입 1 : <?  2 :    session_start();  4 :    if(!$userid) {  5 :      echo("  6 :       <script>  7 :         window.alert('회원가입 후 이용하세요.')  8 :         history.go(-1)  9 :       </script>  10 :    ");  11 :    exit;  12 :    } 13 : 24 :    include "../dbconn.php";        26 :    $id = $userid;  27 :    $name = $username; 세션변수

【예제 13-8】insert_ripple.php 02 29 :    $regist_day = date("Y-m-d (H:i)");  // 현재의 날짜 저장  30 :    $ip = $REMOTE_ADDR;         // 방문자의 IP 주소를 저장  31 :  32 :    // 레코드 삽입 명령  33 :    $sql = "insert into notice_ripple(parent, id, name, content, regist_day, ip) ";  34 :    $sql .= "values('$num', '$id', '$name', '$content', '$regist_day', '$ip')";     35 :     36 :    mysql_query($sql, $connect);  // $sql 에 저장된 명령 실행  37 :  38 :    mysql_close();                // DB 연결 끊기  39 :     40 :    Header("Location:view.php?num=$num");  // view.php 로 이동  41 : ?>

【예제 13-9】delete_ripple.php 02 리플 글 삭제  1 : <?  2 :       include "../dbconn.php";  3 :  4 :       $sql = "delete from notice_ripple where num = $ripple_num";  5 :       mysql_query($sql, $connect);  6 :       Header("Location:view.php?num=$num");  7 :       mysql_close();  8 : ?>