1 / 38

데이터베이스를 이용해 게시판 만들기

8. 데이터베이스를 이용해 게시판 만들기. MySQL API 에서는 MySQL 내장 함수를 제공한다. MySQL API 다루기. 1. 이 장에서 다룰 내용. 미니 게시판 만들기. 2. 01. MySQL API 다루기. SQL API MySQL 데이터베이스를 사용할 수 있도록 PHP 에서 제공하는 함수 MySQL 을 연결 · 종료하는 API 와 데이터베이스에 데이터를 추가 · 삭제 · 수정하는 SQL 쿼리 API 로 구성 MySQL 연결 / 종료 API.

edna
Download Presentation

데이터베이스를 이용해 게시판 만들기

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8 데이터베이스를 이용해 게시판 만들기 MySQL API에서는 MySQL 내장 함수를 제공한다.

  2. MySQL API 다루기 1 이 장에서 다룰 내용 미니 게시판 만들기 2

  3. 01. MySQL API 다루기 • SQL API • MySQL 데이터베이스를 사용할 수 있도록 PHP에서 제공하는 함수 • MySQL을 연결·종료하는 API와 데이터베이스에 데이터를 추가·삭제·수정하는 SQL 쿼리 API로 구성 • MySQL 연결/종료 API

  4. 01. MySQL API 다루기 • SQL 쿼리 API

  5. 01. MySQL API 다루기 • MySQL 연결/종료 함수 • mysql_connect 함수 • 서버나 데이터베이스에 연결하는 함수 • 접속 권한이 있는 사용자 정보를 인자로 받아 서버와 데이터베이스에 연결하는 함수 • mysql : MySQL에 접속하는 명령문 • -u : 사용자 ID • -p : 비밀번호 • -h : 호스트이름

  6. 01. MySQL API 다루기 • MySQL 연결/종료 함수 • mysql_connect 함수 • 성공적으로 연결하면 식별자 번호를 반환하고, 실패하면 False를 반환 • 연결에 실패하면 반환값을 이용해 오류 메시지를 표시하면서 종료 • hostname : 서버의 호스트 이름 또는 호스트 이름:포트번호 • 예:localhost 또는 localhost:80 • username : 사용자 ID • password : 비밀번호 • databaseName : 데이터베이스 이름 resource mysql_connect(string hostname [:port], string username, string password, string databaseName);

  7. 01. MySQL API 다루기 기본예제 8-1 localhost 서버에 연결하기 01 02 03 04 05 06 07 08 09 10 11 12 13 <? $mydb = mysql_connect("localhost", "root", "php123"); if(!$mydb) { print("MySQL 연결을 실패하였습니다.<br>"); die("PHP를 강제 종료합니다."); } else { print("MySQL에 정상적으로 연결되었습니다."); } ?>

  8. 01. MySQL API 다루기 응용예제 8-2 localhost 서버에 있는 mydb 데이터베이스에 연결하기 01 02 03 04 05 06 07 <? $mydb = mysql_connect( ); if(!$mydb) die("PHP에 연결할 수 없습니다."); else print("MySQL에 정상적으로 연결되었습니다."); ?>

  9. 01. MySQL API 다루기 • MySQL 연결/종료 함수 • mysql_close 함수 • 연결된 데이터베이스를 해제하는 함수 • mysql_connect( )로 연결한 MySQL은 웹 페이지의 스크립트를 모두 처리하면 자동으로 종료하나, mysql_close()를 이용하면 임의의 위치에서 MySQL 연결을 종료할 수 있다. • $link_identifier : mysql_connect()로 반환된 값 • mysql_close()는 성공적으로 연결이 종료되면 True를, 실패하면 False를 반환 bool mysql_close([resource $link_identifier]); 기본예제 8-3 mysql_close 함수 사용하기 01 02 03 04 05 06 07 08 <? $mydb = mysql_connect("localhost", "root", "php123"); if(!$mydb) die("MySQL에 연결할 수 없습니다."); else print("MySQL에 연결되었습니다."); mysql_close($mydb); ?>

  10. 01. MySQL API 다루기 • MySQL 연결/종료 함수 • mysql_select_db 함수 • 열린 서버에서 특정 데이터베이스를 활성화할 때 사용 • 사용 중인 데이터베이스를 변경 • 사용자 권한을 바탕으로 연결된 데이터베이스를 다른 데이터베이스로 변경한다. • 반환값으로 성공하면 True를, 실패하면 False를 반환 • $database_name : 선택할 데이터베이스 이름 • $link_identifier : mysql_connect()로 반환된 값 bool mysql_select_db(string $database_name [, resource $link_identifier]);

  11. 01. MySQL API 다루기 기본예제 8-4 mysql_select_db 함수 사용하기 01 02 03 04 05 06 07 08 09 10 11 • <? • $mydb = mysql_connect("localhost", "root", "php123", "mydb"); • if($mydb) • { • if(mysql_select_db('dbtest', $mydb)) • print("데이터베이스가 성공적으로 변경되었습니다."); • } • else • print("데이터베이스를 변경할 수 없습니다."); • mysql_close($mydb); • ?>

  12. 01. MySQL API 다루기 • SQL 쿼리 함수 • mysql_query 함수 • 연결한 데이터베이스에서 SQL 명령문을 실행하는 함수 • 데이터베이스에 있는 테이블에 접속하여 SQL 쿼리에 만족하는 결과값을 얻을 수 있다. • 성공하면 True를, 실패하면 False를 반환 • $query • 실행할 SQL 명령문 • 세미콜론(;)으로 끝나지 않는 문자열 • SQL 명령어인 SELECT, SHOW, DESCRIBE, EXPLAIN은 성공적으로 처리하면 데이터를 전달하고, 실패하면 False를 반환 • $link_identifier : mysql_connect()로 반환된 값 resource mysql_query(string $query [, resource $link_identifier]);

  13. 01. MySQL API 다루기 기본예제 8-5 mysql_query 함수 사용하기 01 02 03 04 05 06 07 08 09 10 11 12 13 <? $mydb = mysql_connect("localhost", "root", "php123"); if(!mysql_select_db('mydb', $mydb)) die("데이터베이스를 선택할 수 없습니다."); $result = mysql_query('SELECT * FROM userdb'); if(!$result) die('SQL 오류 발생 : ' . mysql_error($mydb)); echo "쿼리 성공<br>"; mysql_close($mydb); ?>

  14. 01. MySQL API 다루기 • SQL 쿼리 함수 • mysql_num_rows와 mysql_num_fields 함수 • SQL을 수행한 결과 행과 필드의 개수를 반환 • SQL 명령어의 SELECT 구문에서만 결과값을 얻을 수 있다. • $result : mysql_query() 함수를 호출한 결과의 resource int mysql_num_rows(resource $result); int mysql_num_fields(resource $result);

  15. 01. MySQL API 다루기 기본예제 8-6 mysql_num_rows와 mysql_num_fields 함수 사용하기 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 • <? • $mydb = mysql_connect("localhost", "root", "php123"); • if(!mysql_select_db('mydb', $mydb)) • die("데이터베이스를 선택할 수 없습니다."); • $result = mysql_query('SELECT * FROM userdb'); • if($result) • { • echo "쿼리 성공<br>"; • echo "행의 개수 :" . mysql_num_rows($result)."<br>"; • echo "필드의 개수 :" . mysql_num_fields($result)."<br>"; • } • else • die('SQL 오류 발생 : ' . mysql_error($mydb)); • mysql_close($mydb); • ?>

  16. 01. MySQL API 다루기 • SQL 쿼리 함수 • 결과값 출력하기 • mysql_fetch_row() • mysql_fetch_array() • mysql_fetch_object() • mysql_result() • $result : mysql_query() 함수를 호출한 결과의 resource • $result_type • 함수를 정상적으로 수행한 후 반환할 배열의 형태로, • 기술할 수 있는 상수로는 MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH가 있다. • 기본값은 MYSQL_BOTH다. • $row : 검색된 결과에서 행번호를 기술하며, 행번호는 0부터 시작한다. • $field : 검색을 위한 필드의 오프셋이나 이름이다. array mysql_fetch_row(resource $result); array mysql_fetch_array(resource $result [, int $result_type]); object mysql_fetch_object(resource $result); string mysql_result(resource $result, int $row [, mixed $field]);

  17. 01. MySQL API 다루기 • SQL 쿼리 함수(결과값 출력하기) • mysql_fetch_row() • 결과값에서 한 행 단위로 데이터값을 가져옴 • 한 행의 값을 $row배열에 저장 • $row의 첨자를 변경하여 한 행의 값을 표시할 수 있다. • 첨자는 0부터 시작 • mysql_fetch_array 함수 • 결과값에서 한 행의 데이터를 필드 이름의 첨자를 갖는 배열로 반환 • 한 행의 데이터가 $arr 배열로 저장됨 • $arr[name] 형태로 사용하거나 $arr[0]처럼 사용할 수도 있음. while($row = mysql_fetch_row($result)) { echo("$row[0] | $row[1] | $row[2] | $row[3] | $row[4]<br>"); } while($arr = mysql_fetch_array($result)) { echo("$arr[name] | $arr[eng] | $arr[mat] | $arr[lan] | $arr[his]<br>"); }

  18. 01. MySQL API 다루기 • SQL 쿼리 함수(결과값 출력하기) • mysql_fetch_object 함수 • 결과값에서 한 행의 데이터를 오브젝트(객체) 형태로 가져온다. • $obj ->name 형태로 사용할 수 있다. • mysql_result 함수 • 결과값에서 지정한 필드값을 가져온다. • 행 위치값과 필드 위치값을 전달하면 데이터를 반환한다. while($obj = mysql_fetch_object($result)) { echo("$obj->name | $obj->eng | $obj->mat | $obj->lan | $obj->his<br>"); } • for($i = 0; $i < mysql_num_rows($result); $i++) • { • for($j = 0; $j < mysql_num_fields($result); $j++) • { • $value = mysql_result($result, $i, $j); • echo("$value |"); • } • echo("<br>"); • }

  19. 01. MySQL API 다루기 기본예제 8-7 mysql_fetch_row 함수 사용하기 ① 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 <? $mydb = mysql_connect("localhost", "root", "php123”); mysql_query("set names euckr"); if(!mysql_select_db('mydb', $mydb)) die("데이터베이스를 선택할 수 없습니다."); $result = mysql_query('SELECT * FROM userdb'); if($result) { while($row = mysql_fetch_row($result)) echo("$row[0] | $row[1] | $row[2] | $row[3] | $row[4]<br>"); } else die('SQL 오류 발생 : ' . mysql_error($mydb)); mysql_close($mydb); ?>

  20. 01. MySQL API 다루기 기본예제 8-8 mysql_fetch_row 함수 사용하기 ② 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <? $host = "localhost"; $user = "root"; $password = "php123"; $mydb = mysql_connect($host, $user, $password); mysql_query("set names euckr"); if(!mysql_select_db('mydb', $mydb)) die("데이터베이스를 선택할 수 없습니다."); $result = mysql_query('SELECT * FROM userdb'); if($result) { for($i = 0; $i < mysql_num_rows($result); $i++) { for($j = 0; $j < mysql_num_fields($result); j++) { $value = mysql_result($result, $i, $j); echo("$value |"); } echo("<br>"); } } 24 25 26 27 else die('SQL 오류 발생 : ' . mysql_error($mydb)); mysql_close($mydb); ?>

  21. 01. MySQL API 다루기 • 기타 MySQL API

  22. 01. MySQL API 다루기 • 기타 MySQL API

  23. 01. MySQL API 다루기 • MySQL 코드구조

  24. 02. 미니 게시판 만들기 • 게시판에 필요한 테이블 만들기 • phpMyAdmin을 실행한다. • 사용자 : root • 암호 : php123 • mydb를 선택한다(mydb 데이터베이스가 없으면 새로 만든다). • 데이터베이스 mydb에 새로운 테이블을 만든다. • 이름란에‘board’, Number of fields란에‘3’을 입력하고, <실행> 버튼을 누른다.

  25. 02. 미니 게시판 만들기 • board 테이블에 uid, title, content 필드를 만들어 다음과 같이 속성값을 지정한다. 모든 입력이 완료되면 <저장> 버튼을 눌러 저장한다.

  26. 02. 미니 게시판 만들기 • 작성 페이지 만들기 기본예제 8-9 미니 게시판 만들기 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 <? echo(“ <html> <head> <title>미니 게시판 만들기</title> </head> <body> <center> <form method=post action='ch08ex10.php'> <table> <tr> <td width=50>제목</td> <td valign=middle width=200> <input type=text size=70 name=title> </td> </tr> <tr> <td valign=top>내용</td> <td> <textarea cols=69 rows=10 name=content> 내용 입력</textarea> </td> </tr> 24 25 26 27 28 29 30 31 32 33 </table> <input type=submit value='글 올리기'> <input type=reset value='취소'> </form> <br> </center> </body> </html> "); ?>

  27. 02. 미니 게시판 만들기 • 전달된 데이터 저장하기 • 전달된 데이터 표시하기 기본예제 8-10 수신한 내용 확인하기 01 02 03 04 05 06 07 <? echo "수신한 내용<br>"; $title = htmlspecialchars($_POST['title']); echo $title . "<br>"; $content = htmlspecialchars($_POST['content']); echo $content . "<br>"; ?>

  28. 02. 미니 게시판 만들기 • 데이터베이스에 저장하기 기본예제 8-11 데이터베이스에 저장하기 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 <? echo "수신한 내용<br>"; $title = htmlspecialchars($_POST['title']); echo $title . "<br>"; $content = htmlspecialchars($_POST['content']); echo $content . "<br>"; $host = "localhost"; $user = "root"; $password = "php123"; $mydb = mysql_connect($host, $user, $password) or die("MySQL에 연결할 수 없습니다."); if(!mysql_select_db('mydb', $mydb)) die("데이터베이스를 선택할 수 없습니다."); $sql = "INSERT INTO board(uid, title, content) VALUES(NULL, '$title', '$content')"; mysql_query($sql, $mydb); mysql_close($mydb); print ("board 테이블에 데이터 추가했습니다."); ?>

  29. 02. 미니 게시판 만들기 • 데이터베이스 내용 확인 기능 구현하기 기본예제 8-12 데이터베이스 내용 확인하기 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 <? echo "데이터베이스의 내용 출력<br>"; $host = "localhost"; $user = "root"; $password = "php123"; $mydb = mysql_connect($host, $user, $password); $db_id = mysql_select_db('mydb', $mydb); $sql = "SELECT * FROM board"; $result = mysql_query($sql, $mydb); $total_record = mysql_num_rows($result); echo "total_record=".$total_record."<p>"; while($row_array = mysql_fetch_array($result)) { echo("$row_array[uid] | $row_array[title] | row_array[content]<br>"); } mysql_close($mydb); ?>

  30. 02. 미니 게시판 만들기 • 수정 가능한 데이터 확인하기 기본예제 8-13 수정 가능한 데이터 확인하기 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 <? echo "데이터베이스의 내용 출력<br>"; $host = "localhost"; $user = "root"; $password = "php123"; $mydb = mysql_connect($host, $user, $password); mysql_query("set names euckr"); $db_id = mysql_select_db('mydb', $mydb); $sql = "SELECT * FROM board"; $result = mysql_query($sql, $mydb); $total_record = mysql_num_rows($result); echo "total_record=".$total_record."<p>"; while($row_array = mysql_fetch_array($result)) { echo("$row_array[uid] | $row_array[title] | $row_array[content] | <a href='ch08ex14.php?uid=$row_array[uid]'>수정</a><br>"); } mysql_close($mydb); ?>

  31. 02. 미니 게시판 만들기 • 사용자 수정 페이지 기본예제 8-14 데이터 수정 페이지확인하기(1) 01 02 03 04 05 06 07 08 09 10 11 13 14 15 16 17 18 19 20 21 <? echo "수신한 내용 : "; $uid = $_GET['uid']; echo $uid . "<br>"; $host = "localhost"; $user = "root"; $password = "php123"; $mydb = mysql_connect($host, $user, $password); mysql_query("set names euckr"); $db_id = mysql_select_db('mydb', $mydb); $sql = "SELECT * FROM board WHERE uid = $uid"; $result = mysql_query($sql, $mydb); $row_array = mysql_fetch_array($result); echo(“ <html> <head> <title>미니 게시판 만들기</title> </head> 22 23 24 25 26 27 28 29 30 31 <body> <center> <form method=post action='ch08ex15.php'> <table> <tr> <td width=50>제목</td> <td valign=middle width=200> <input type=text size=70 name=title value='$row_array[title]'> </td> </tr>

  32. 02. 미니 게시판 만들기 • 사용자 수정 페이지 기본예제 8-14 데이터 수정 페이지확인하기(2) 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 <tr> <td valign=top>내용</td> <td> <textarea cols=69 rows=10 name=content> $row_array[content]</textarea> </td> </tr> </table> <input type=hidden name=uid value=$uid> <input type=submit value='수정하기'> <input type=reset value='취소'> </form> <br> </center> </body> </html> "); ?>

  33. 02. 미니 게시판 만들기 • 사용자 수정 페이지 기본예제 8-15 수정한 데이터 저장하기 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 <? echo "수신한 내용<br>"; $title = htmlspecialchars($_POST['title']); echo $title . "<br>"; $content = htmlspecialchars($_POST['content']); echo $content . "<br>"; $uid = $_POST['uid']; echo $uid . "<br>"; $host = "localhost"; $user = "root"; $password = "php123"; $mydb = mysql_connect($host, $user, $password) or die("MySQL을 연결할 수 없습니다."); if(!mysql_select_db('mydb', $mydb)) die("데이터베이스를 선택할 수 없습니다"); $sql = "UPDATE board SET title = '$title', content = '$content' WHERE uid = $uid"; mysql_query($sql, $mydb); echo(mysql_error($mydb)); 21 22 23 24 25 26 27 28 29 30 31 32 $sql = "SELECT * FROM board"; $result = mysql_query($sql, $mydb); echo(mysql_error($mydb)); $total_record = mysql_num_rows($result); echo "total_record=".$total_record."<p>"; while($row_array = mysql_fetch_array($result)) { echo("$row_array[uid] | $row_array[title] | $row_array[content] | <a href='ch08ex14.php?uid=$row_array[uid]'> 수정</a><br>"); } mysql_close($mydb); ?>

  34. 02. 미니 게시판 만들기 기본예제 8-16 삭제 가능한 데이터 확인하기 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 <? echo "데이터베이스의 내용 출력<br>"; $host = "localhost"; $user = "root"; $password = "php123"; $mydb = mysql_connect($host, $user, $password); $db_id = mysql_select_db('mydb', $mydb); $sql = "SELECT * FROM board"; $result = mysql_query($sql, $mydb); $total_record = mysql_num_rows($result); echo "total_record=".$total_record."<p>"; while($row_array = mysql_fetch_array($result)) { echo("$row_array[uid] | $row_array[title] | $row_array[content] | <a href='ch08ex17.php?uid=$row_array[uid]'>삭제</a><br>"); } mysql_close($mydb); ?>

  35. 02. 미니 게시판 만들기 • 데이터 삭제 기능 기본예제 8-17 데이터 삭제하기 01 02 03 04 05 06 07 08 09 10 11 12 13 14 <? $uid = $_GET['uid']; $host = "localhost"; $user = "root"; $password = "php123"; $mydb = mysql_connect($host, $user, $password); $db_id = mysql_select_db('mydb', $mydb); $sql = "DELETE FROM board WHERE uid = $uid"; $result = mysql_query($sql, $mydb); if(result) echo "uid=" . $uid . "데이터가 삭제되었습니다.<br>"; mysql_close($mydb); ?>

  36. 테이블을 이용해 게시판 리스트 만들기 18 예제 설명 • 게시판에서 삭제 가능한 리스트를 테이블을 이용해 깔끔하게 표현한다. 실행결과

  37. 수정과 삭제가 가능한 게시판 리스트 만들기 19 예제 설명 • [예제모음 18]에 코드를 추가하여 하나의 게시판 리스트에서 게시물을 수정·삭제할 수 있는 리스트 페이지를 만든다. 실행결과

  38. Thank You 8장 데이터베이스를 이용해 게시판 만들기

More Related