본문 바로가기

PHP

간단한 방명록 만들기

반응형

저번주에 만든 방명록 코드를 정리해야 할 시간이다...


<전체 디자인 페이지>


일단 구성은 이름, 이메일, 내용을 저번에 정리했던 POST방식 으로 받아서 데이터 베이스에 저장한뒤 그 아래에 출력하는 형식이다.


첫번째로 제일 위에 이름, 이메일,  내용을 쓸수있는 코드를 보면

------------------------------------------------------------------------------

<form action = "book.php" method = "POST">

<p>이름 :<input  type = "text" name = "name" /> </p>

<p>이메일 :<input  type = "text" name = "email" /> </p>

<p>내용 :<input  type = "text" name = "msg" size="45"/> </p>

<input type = "submit"/>

------------------------------------------------------------------------------

첫번째 줄 form action은 '어디로' 날릴지 정하는 곳이고 method는 '어떤 방식'으로 날릴지 결정하는것으로 저번에 적은 POST방식과 GET방식 중 필요한 방식으로 보낼 수있다. 나는 book.php라 했으니 book.php로 POST 방식으로 보내겠다는 소리이다. 세개의 텍스트 입력과 submit 버튼도 함께 만들었다.


데이터를 넘겨 받았으면 그걸 저장할 데이터 베이스를 어떻게 생겼는지 '보기만' 해보자.




저장할 데이터 베이스도 만들었고 이제 넘겨받은 데이터를 데이터 베이스에 저장하려면 데이터 베이스에 접속을 할 수 있는 객체를 생성해야 한다. 두번째로 객체를 생성하고 데이터 베이스를 선택하는 코드를 보면

------------------------------------------------------------------------------

$con = mysql_connect("DB서버", "아이디", "비밀번호");

if (!$con)

{

die('Could not connect: ' . mysql_error());

}

mysql_select_db('guestbook',$con);

------------------------------------------------------------------------------

첫번째 줄에 mysql_connect()함수는 DB서버에 접속하는 함수로 첫번째 인자로 DB서버, 두번째 인자로 아이디, 세번째 인자로 비밀번호를 써준다. 만약에 접속이 안될때는 die()를 써서 mysql_error()를 보여주는 예외 처리를 만든다. 마지막 줄에 mysql_select_db()는 보이는 그대로 어떤 db를 선택할지 정하는 함수로 나는 'guestbook'을 선택했다.


여기까지 하면 기본 입력받는것과 데이터 베이스 연동까지 끝이난다. 그럼 세번째로 연동된 데이터 베이스 안에 데이터를 집어넣는 코드를 보자.

------------------------------------------------------------------------------

mysql_query('SET NAMES utf8');

mysql_query("INSERT INTO content(NAME, EMAIL, MESSAGE, REG_DATE)

VALUES('$name', '$email', '$msg', NOW())");

------------------------------------------------------------------------------

데이터 베이스 안으로 집어 넣을때는 mysql_query() 함수를 사용한다. 첫번째 줄의 코드는 데이터베이스에 한글을 집어넣을때 깨져서 들어간다면 저 코드를 집어넣어 주면 제대로된 한글이 들어간다. 두번째 줄의 mysql_query("INSERT INTO 테이블이름(필드네임, 필드네임필드네임필드네임) VALUES('값', '값''값''값')"); 이런식으로 내가 집어넣고 싶은 테이블의 필드 네임과 values를 매칭시켜주는 코드 이다. 위 코드에서는 "NAME, EMAIL, MESSAGE, REG_DATE"라는 content테이블의 필드안에 POST방식으로 넘겨 받은 "이름, 이메일, 내용, 현재 시간"을 매칭시켜서 집어넣는 것이다.


마지막으로 집어 넣은 데이터를 꺼내서 출력하는 코드를 보면

------------------------------------------------------------------------------

<table border = "1">

<tr>

<th>이름/이름/작성일</th>

<th>할말</th>

</tr> 

<?php

$result = mysql_query('SELECT * FROM content ORDER BY REG_DATE DESC');

while($row = mysql_fetch_array($result))

{

echo"<tr>";

echo"<td>{$row['NAME']} / {$row['EMAIL']} / {$row['REG_DATE']}</td>";

echo "<td>{$row['MESSAGE']}</td>";

echo"</tr>";

}

?>

</table>

------------------------------------------------------------------------------

첫번째 코드를 보면 $result = mysql_query('SELECT * FROM content ORDER BY REG_DATE DESC'); 이 코드는 mysql_query 안에 있는 content라는 테이블에 있는 데이터들을 날짜 역순으로 정렬해 result에 쿼리로 저장하겠다는 내용이다. 그렇다면 ORDER BY REG_DATE DESC 이 문장이 날짜를 역순으로 정렬하겠다는 뜻이 되는것이다.

$row = mysql_fetch_array($result)는  mysql_query의 결과로 result에 저장된 쿼리에서 한 레코드씩 배열로 저장하겠다는 뜻이다. 아래의 출력은 배열을 출력하는 방식으로 출력을 하면 된다.


이렇게 출력까지 끝내면 아직 미적으로는 허술하지만 성능은 문제가 없는 방명록을 만들 수 있다. 전체 코드는 파일 첨부로 첨부한다.


반응형

'PHP' 카테고리의 다른 글

MVC패턴  (1) 2012.12.20
PHP에서의 객체지향 특징  (0) 2012.12.05
쿠키란 무엇인가!  (0) 2012.11.20
HTML에서 post방식과 get방식의 차이점  (0) 2012.11.20