14장 질의응답 한빛미디어(주).

Slides:



Advertisements
Similar presentations
일정 관리 다이어리 제작 JSP Programming with a Workbook. 학습 목표  사용자의 일정을 관리할 수 있는 다이어리에 대하여 알아보자. JSP Programming with a Workbook2.
Advertisements

10장 회원 가입과 로그인 한빛미디어(주).
09장 실습 웹 사이트 소개와 회원가입 페이지 제작.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
예방접종 정보 SITE.
Database Laboratory, Hong Ik University
13장 공지사항 한빛미디어(주).
웹 해킹 기초와 실습.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
11장 방명록 한빛미디어(주).
8장 쿠키와 세션.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
JDBC 프로그래밍 이수지 이동주 1.
13장. 자바빈과 데이터베이스를 연동한 게시판 시스템
뇌를 자극하는 SQL Server 장. SQL Server 2005 통합 서비스.
6장 Mysql 명령어 한빛미디어(주).
MVC 기반 게시판 작성 Youbok Choi.
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
11장. 데이터베이스 서버 구축과 운영.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
5장 Mysql 데이터베이스 한빛미디어(주).
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
ASP.NET : Database 접근 2008 컴퓨터공학실험(Ⅰ)
4-1장. MySQL 제13장.
14 뷰(View) 뷰의 개념 뷰 관리.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
16장. 테이블의 변경 새로운 행 삽입 테이블에서 테이블로 행을 복사 행 값의 변경 테이블에서 행 삭제
16장 설문조사 한빛미디어(주).
29강. MVC패턴을 이용한 게시판 만들기-III
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
KHS JDBC Programming 4 KHS
5장 Mysql 데이터베이스 한빛미디어(주).
DB연동하기 원격db접속.
Git 사용법 GitHub 가입 GitHub 새 저장소 만들기 Git 설치 로컬 저장소 만들기 로컬 저장소와 원격 저장소 연결
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
고급 T-SQL.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
CHAPTER 06. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
CHAP 13. 방명록 만들기 실습.
게임웹사이트운영 [10] 폼 작성.
9장 웹 사이트 초기 화면 제작 한빛미디어(주).
JDBC Lecture 004 By MINIO.
JSP 게시판 구현.
JSP Programming with a Workbook
15장 자료실 한빛미디어(주).
테이블 만들기 실습 목표 입력할 tableDB <실습1> SSMS에서 테이블 생성
8장 쿠키와 세션 한빛미디어(주).
12장 자유게시판 한빛미디어(주).
17장 웹 사이트 제작 완성 한빛미디어(주).
CHAP 21. 전화, SMS, 주소록.
문성우 SQL 실습 Part Ⅰ 문성우.
13장 자바빈과 데이터베이스를 연동한 게시판 시스템
2장 PHP 기초 PHP의 시작과 끝을 이해한다. 주석문에 대하여 이해한다. echo 문을 이용하여 화면에 출력하
자바빈/커넥션 풀/세션을 사용한 Ajax 기반의 게시판 시스템
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
Chapter 10 데이터 검색1.
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
Stored program 장종원
maria db JDBC PROGRAMMING 5
웹과 모바일 홈페이지의 이해와 제작 [PHP / MYSQL] 게시판 만들기
Data Base Mysql.
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
제 5 장 MariaDB인덱스 생성 및 관리.
Presentation transcript:

14장 질의응답 한빛미디어(주)

학습 목표 질의응답 게시판의 동작 기능을 이해한다 질의응답 게시판의 DB 테이블 구조를 이해한다 답변글 처리 방법에 대하여 이해한다 답변글을 목록에 출력하는 방법을 익힌다 답변글 폼 양식의 사용법을 익힌다 답변글을 DB 테이블에 저장하는 법을 익힌다

주요 학습 내용 01. 질의 응답 파일목록 및 DB 테이블 02. 답변글 처리 방법 03. 목록 보기 04. 글쓰기 05. 글내용 보기

질의응답 미리 보기 01 공지사항 게시판에다 답변달기 기능 추가

질의응답 파일 목록 02 파일명 설명 qna_board.sql 질의응답 DB 테이블 생성 명령 qna_ripple.sql 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 질의응답 글쓰기 양식 [표 14-1] 질의응답 게시판에 사용되는 파일 목록

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

not null, auto_increment, 질의 응답 게시판 DB 테이블 04 필드 이름 타입 추가 사항 필드 설명 num int not null, auto_increment, primary key 일렬 번호 group_num not null 그룹 번호 ord 답변 글 순서 depth 답변 글 깊이 id varchar(10) 아이디 name 이름 subject varchar(100) 제목 content text 글 내용 regist_day varchar(20)   글 쓴 날짜 hit 조회수 ip 접속 IP [표 14-2] 질의응답의 게시판 DB 테이블 (테이블 명 : qna_board)

질의응답 게시판 DB 테이블 만들기 05 메모장으로 다음을 타이핑한 다음 “c:\mysql\bin” 폴더 밑에 “qna_board.sql”이름으로 저장    CREATE TABLE qna_board (        num int not null auto_increment,        group_num int not null,        ord int not null,        depth int not null,        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 < qna_board.sql

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

질의응답 리플 DB 테이블 만들기 07 메모장으로 다음을 타이핑한 다음 “c:\mysql\bin” 폴더 밑에 “qna_ripple.sql”이름으로 저장 CREATE TABLE qna_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 < qna_ripple.sql

[그림 14-2] qna_board 테이블의 group_num, depth, ord 필드 값 답변글 삽입 전 08 [그림 14-2] qna_board 테이블의 group_num, depth, ord 필드 값

[그림 14-3] “답변글 1-2-3“에 새로운 답변글 삽입 답변글 삽입 후 09 [그림 14-3] “답변글 1-2-3“에 새로운 답변글 삽입

【예제 14-1】list.php 02 질의응답 목록 보기 1 : <? 2 : session_start(); 3 :  1 : <?  2 :    session_start();  3 :  4 :    $scale = 5;   // 한 화면에 표시되는 글 수  5 :  6 :    include "../dbconn.php";  7 :    $sql = "select * from qna_board order by group_num desc, ord asc";  8 :    $result = mysql_query($sql, $connect);  9 : ?>

【예제 14-1】list.php 02 73 : $space = ""; 74 :  74 :  75 :       for ($j=0; $j<$row[depth]; $j++)  76 :           $space = "  ".$space;  77 :  78 :       // 레코드 화면에 출력하기  79 :       echo "  80 :         <tr height=25>  81 :           <td align=center>$number</td>  82 :           <td> $space  83 :            ";  84 :       if ($row[depth]>0)  85 :         echo "<img src='img/reply_head.gif' border=0>";  86 :       else  87 :         echo "<img src='img/record_id.gif' border=0>";

【예제 14-2】write_form.php 02 글쓰기 폼 양식 59 : <? 60 : if ($num) 61 : {  59 : <?  60 :    if ($num)  61 :    {  62 :       include "../dbconn.php";  64 :       $sql = "select * from qna_board where num = $num";  65 :       $result = mysql_query($sql, $connect);  67 :       $row = mysql_fetch_array($result);  68 :  69 :       $subject = "[re]".$row[subject];  70 :       $content = ">".$row[content];  71 :       $content = str_replace("\n", "\n>", $content);  72 :       $content = "\n\n".$content;  73 :  74 :       mysql_close();  75 :    }  76 : ?>

【예제 14-3】insert.php 02 글쓴 내용의 DB 저장 39 :    if (!$num) // $num 이 0 이면 원글, 1이면 답변 글  40 :    {     41 :       $depth = 0;   // depth, ord 를 0으로 초기화  42 :       $ord = 0;  44 :       // 레코드 삽입(group_num 제외)  45 :       $sql = "insert into qna_board(depth, ord, id, name, subject,";  46 :       $sql .= "content, regist_day, hit, ip) ";  47 :       $sql .= "values($depth, $ord, '$userid', '$username', '$subject',";  48 :       $sql .= "'$content', '$regist_day', 0, '$ip')";     49 :       mysql_query($sql, $connect);  // $sql 에 저장된 명령 실행  51 :       // 최근 auto_increment 필드(num) 값 가져오기  52 :       $sql = "select last_insert_id()";  53 :       $result = mysql_query($sql, $connect);  54 :       $row = mysql_fetch_array($result);  55 :       $auto_num = $row[0];

【예제 14-3】insert.php 02 57 : // group_num 값 업데이트  58 :       $sql = "update qna_board set group_num = $auto_num                      where num=$auto_num";  59 :       mysql_query($sql, $connect);  60 :    }  61 :     else  62 :    {  63 :       // 부모 글 가져오기  64 :       $sql = "select * from qna_board where num = $num";  65 :       $result = mysql_query($sql, $connect);  66 :       $row = mysql_fetch_array($result);  67 :  68 :       // 부모 글로 부터 group_num, depth, ord 값 설정  69 :       $group_num = $row[group_num];  70 :       $depth = $row[depth] + 1;  71 :       $ord = $row[ord] + 1;

【예제 14-3】insert.php 02   75 :       $sql = "update qna_board set ord = ord + 1 where                      group_num = $row[group_num]  76 :               and ord > $row[ord]";  77 :       mysql_query($sql, $connect);   79 :       // 레코드 삽입  80 :       $sql = "insert into qna_board(group_num, depth, ord, id,                      name, subject,";  81 :       $sql .= "content, regist_day, hit, ip) ";  82 :       $sql .= "values($group_num, $depth, $ord, '$userid',                            '$username', '$subject',";  83 :       $sql .= "'$content', '$regist_day', 0, '$ip')";     85 :       mysql_query($sql, $connect);  // $sql 에 저장된 명령 실행  87 :    }  88 :       mysql_close();                // DB 연결 끊기  89 :     90 :       Header("Location:list.php?page=$page");  // list.php 로 이동  91 : ?>

【예제 14-4】view.php 02 글내용 보기 142 : <? 143 : echo "  144 :           <td align=center>  145 :             <a href='write_form.php?num=$num&page=$page'>  146 :                            <img src='img/i_answer.gif' border=0> </a>  147 :             <a href='modify_form.php?num=$num&page=$page'>  148 :                            <img src='img/i_edit.gif' border=0> </a>  149 :             <a href='delete.php?num=$num&page=$page'>  150 :             <img src='img/i_del.gif' border=0> </a>  151 :             <a href='list.php?page=$page'><img src='img/i_list.gif‘ border=0>  152 :    </a></td>  153 :     ";  154 : ?>  155 :         </tr>

【예제 14-1】list.php 02 질의응답 목록 보기