웹마스터 팁

교육용 메모장 #5

2000.07.10 15:33

zero

이제 memo.php3 파일에서 넘겨받은 데이터를 reg_memo.php3 파일로 넘겨서 MySQL DB에 입력하는 걸 알아봅시다.

reg_memo.php3 파일에서 해야 할 일은 다음과 같습니다.
1. name과 memo를 넘겨받는다
2. 넘겨받은 값이 비어있지 않은 값인지를 확인하여 비어 있으면 경고메세지를 출력한다.
3. 이름과 메모내용의 html 태그를 텍스트 글자로 변환한다.
4. 글쓴 시간을 time() 함수를 이용해서 구한다.
5. MySQL DB에 저장한다.

우선 1번부터 알아봅시다.
어떻게 데이터가 넘어올까요?
앞에 memo.php3 내용중 <input type=text name=name size=8 maxlength=8> 로 준 부분이 있습니다.
여기서 name=name 이라는 부분이 있죠?
php에서는 이 name=이름 으로 되어 있는곳에서 이름을 바로 변수로 만둘어 줍니다.
매우 편리하죠.
즉 reg_memo.php3 파일에는 $name 이라는 변수가 넘어오게 되는것입니다.
$memo 또한 마찬가지이죠.

그럼 이 값을 가지고 2번째 단계인 비어있는 값인지 아닌지를 검사합니다.
비어 있는지를 검사하는 함수는 lib.php3 파일안에 만들었습니다.
바로 isBlankStr() 함수입니다.
다음과 같이 사용하면 됩니다.

if(isBlankStr($name)) message("이름을 입력하셔야 합니다");

만약 $name이 빈값이라면 isBlankStr($name)은 1을 리턴합니다.
1이라는 값은 true, 즉 진실값이기 때문에 if(진실값)은 다음에 있는 message() 함수를 실행하게 됩니다.
message("문자열") 함수는 자바스크립트의 alert 경고표시를 하게 됩니다.
메모내용도 마찬가지로 하면 되죠.

if(isBlankStr($memo)) message("내용을 입력하셔야 합니다");

그럼 3번째 단계로 넘어갑시다.

3번째에서 사용할 함수도 lib.php3 파일안에 미리 만들어 놓았습니다.

del_html() 함수입니다.
사용법은 다음과 같습니다.

$name=del_html($name);
$memo=del_html($memo);

그럼 이제 4번째 단계로 넘어갑시다.
time() 이라는 함수가 있습니다.
이 함수는 1970년 1월 1일을 1로 시작하여 매초마다 1씩 증가한 값을 리턴하는 함수입니다.
이 값을 구할때는

$reg_date=time();

라고 하면 됩니다.

이 값을 연월일로 변경하여 주는 함수는 date() 함수를 이용하면 됩니다.
date("Y년 m월 d일 H시 I분 s초", time()) 라고 하면 되죠.

그럼 이제 이 값을 MySQL DB에 입력하여 봅시다.

mysql_query("insert into memo (name, memo, reg_date) values ('$name','$memo','$reg_date')",$connect) or die(mysql_error());

매우 간단하죠?
insert into memo, 즉 memo라는 테이블에 입력하라는 겁니다.
(name, memo, reg_date) 항목에다가 말이죠.
values 는 들어갈 값을 정하는 부분입니다.
$name, $memo, $reg_date를 순서대로 입력하게 됩니다.
이때 변수를 ' (홑따옴표) 로 묶어 주어야 합니다.

그럼 이제 입력까지 된 상태입니다.

이제 자동으로 memo.php3 파일로 넘어가야 겠죠?

php 에는 header("location:경로"); 라는 편리한 방법이 있습니다.

header("location:memo.html");

위의 경로 부분에 이동할 파일을 적어주면 됩니다.

이때 주의점이 있습니다.
header(); 함수앞에는 어떠한 글자도 출력이 되어서는 안되는 겁니다.

실수로 <? 라는 php 사용하는 구문앞에 한칸이 띄워진다던가 한줄이 띄워지게 되면 그거는 이미 브라우저로 전송이 되어 있는 상태입니다.
이럴때는 header() 함수는 에러를 일으키게 됩니다.
왜냐면 header() 함수는 브라우저로 자료가 넘어가기 전에 실행되어야 하기 때문입니다.

자 그럼 이제 위에서 이야기한 것을 직접 소스로 코딩하겠습니다.
마찬가지로 간단한 주석을 달겠습니다.

---- reg_memo.php3 ----------------------------------------------------------------------
$name, $memo를 넘겨받은 후 검사후 MySQL DB에 저장합니다.
-------------------------------------------------------------------------------------
<?
  // lib.php3 파일을 불러옵니다.
  require "lib.php3";

  // $name, $memo 변수를 검사하여 빈값이면 경고 표시를 합니다.
if(isBlankStr($name)) message("이름을 입력하셔야 합니다");
if(isBlankStr($memo)) message("내용을 입력하셔야 합니다");

  // $name, $memo 에 HTML 태그를 일반 텍스트로 변환합니다.
  $name=del_html($name);
  $memo=del_html($memo);

  // 시간을 구합니다.
  $reg_date=time();

  // Mysql DB 에 입력합니다.
  mysql_query("insert into memo (name, memo, reg_date) values ('$name','$memo','$reg_date')",$connect) or die(mysql_error());

  // memo.html 파일로 이동합니다.
  header("location:memo.php3");
?>
-------------------------------------------------------------------------------------

간단하죠?

이로서 메모장 CGI를 제작하였습니다.
여기서 만든 메모장은 간단히 입력과 목록보기만의 기능밖에 없습니다.
하지만 메모장은 이 정도 기능만 있으면 강력하죠.

메모장을 만들면서 전체적인 흐름을 익혔으리라 생각합니다.
여기서 조금씩 살을 덧붙이다보면 방명록이나 게시판이 탄생하게 됩니다.

이 장에서 폼을 이용한 변수의 전달, MySQL DB에서 자료를 입력하거나 가져오는 부분에 대해서 기본적인 이해가 되었을겁니다.