야매강좌 php10강 : 글쓰기와 DB연동

야매강좌 php10강 : 글쓰기와 DB연동 

 

오늘은 게시판에 글쓰기를 만들겁니다. DB연동도 배우고요. DB연동이란 뭘까요? 그냥 데이터베이스(DB)에 입력하거나 DB의 내용을 빼온다는 얘깁니다.

 

(1) 에러 함수 만들기

거두절미하고 코딩해보겠습니다. 일단 error라는 함수를 만들어봅시다.

 

<html><body>

<? //php 시작

function error($msg) //error라는 함수를 만든다. (괄호 안의 내용은 ‘인자’라고 한다. 현재 인자는 $msg 1개)
{

echo //원래는 출력 함수. php 안에서 자바스크립트 혹은 일반 html언어를 쓰려면 echo를 사용하면 된다

<script name=javascript> //자바 시작
window.alert(‘$msg’); //메시지를 띄운다
history.go(-1); //이전 페이지로
</script> //자바 끝
“;

exit; //끝
}

 

error(“에러 발생!”) //에러함수를 로드함

?> //php 끝

</body></html> 

 

소스 설명을 하면 다음과 같습니다. 먼저 error라는 함수를 만들었죠. 이 함수는 메시지를 띄우고, 이전 페이지로 돌아가는 함수입니다. (메세지와 이전 페이지로 이동은 자바스크립트로 처리했습니다)

 

위 소스에 의하면, error(“블라블라”)라고 쓰면 “블라블라”가 $msg 변수에 들어가죠. 그리고 alert(‘$msg’)에 의해서 “블라블라”가 에러 메시지로 뜨게 됩니다. 이게 인자를 사용하는 이유입니다.

 

인자는 1개 뿐만 아니라 여러 개 있는 함수를 만들 수 있어요. 덕분에 편하게 프로그래밍 가능하죠.

예를 들어 인자 3개의 함수를 만들어 봅시다.

function hamsoo($a, $b, $c)

{ $d = $a + $b + $c;

echo $d; }

 

요렇게 만들어두고 아래와 같이 써보세요.

hamsoo(1, 3, 5);

결국 값으로 9가 출력되게 됩니다. ($d = 1 + 3 + 5)

 

(2) 입력 페이지 만들기

 

입력 페이지를 만들어봅시다. 9강에서 했던 것과 비슷합니다.

일단 이름과 내용칸만 넣어보죠.

 

C:\APM_Setup\htdocs\10-1.php

 <html>
  <script language=”JavaScript”>

 

//체크인풋 함수. 이름이랑 내용이 입력되어 있다면 전송(submit)한다
 function check_input()
 {
  if(document.aaa.name.value == ”)
  { alert(‘이름을 입력하세요’);
   document.aaa.name.focus(); }
  else if(document.aaa.content.value == ”)
  { alert(‘내용을 입력하세요’);
   document.aaa.content.focus(); }
  else
  {
   document.aaa.submit();

  }

 }
 </script>

 

//이름 칸과 내용 칸을 둔다. 글 입력을 클릭하면 체크인풋 함수를 로드한다

 <body>
  <form name=’aaa’ method=’post’ action=’10-2.php’> //post방식으로 10-2.php로 보낸다
    이름 <input type=’text’ name=’name’ size=’10’>
    내용 <input type=’text’ name=’content’ size=’50’>

 <input type=’button’ value=’글 입력’ onclick=”javascript:check_input();”>
  </form>

 </body>
</html>

 

아래와 같이 나온다.

 

(3) 처리 페이지 만든다

 

10-2.php

 <html><body>
 
<?
function error($msg) //에러함수
{echo

<script name=javascript>
window.alert(‘$msg’);
history.go(-1);
</script>
“;
exit;}

 

 

//(1) DB에 연결한다.
mysql_connect(“localhost”, “root”, “apmsetup”) or die (mysql_error());

mysql_select_db(“oaphp”);

//mysql_connect(“서버”, “아이디”, “패스워드” 로 쓰면 된다. 연결 안될시 에러함수 로드
//mysql_select_db(“데이터베이스명”)으로 쓴다. 야매강좌 5강에서 oaphp라는 DB를 구축해뒀었다. http://blog.naver.com/bb_/70168838026

 

 

//(2) 전송받은 데이터를 변수로 저장
$name = $_POST[“name”];
$content = $_POST[“content”];

 

//(3) 초기값 설정. 시간, 아이피주소, 카운트(게시글 번호)를 설정한다. 자세히 알 건 없다
$daytime = time();
$ip = getenv(“REMOTE_ADDR”);
$count = 0;

 

//(4) 입력 검사. 알다시피 공백이 있는지 없는지 검사. 자세히 알 건 없다
if(!ereg(“[^[:space:]]”, $name))
{ error(“이름을 입력하세요”);
 exit; }

if(!ereg(“([^[:space:]])”, $content))
{ error(“내용을 입력하세요”);
 exit; }

 

//(5) DB에 데이터를 넣는다(=글 입력)
$sql = “insert into board (name, content) values (‘$name’,’$content’)”;

mysql_query($sql) or die(mysql_error());

//사용법은

//하나. insert into 테이블명 (필드명1, 필드명2,…) values (필드값1, 필드값2…) 을 변수에 넣는다

//둘. mysql_query($변수명)

 

//(6) 글 입력했다고 메시지 띄우고 마친다
echo

<script name=javascript>
location.href=’list.php$daytime’;

window.alert(‘글 입력했습니다’);
</script>
“;

?>

</body></html>

 

(4) 실행해본다

 

실행법은 간단합니다.

1. 우선 localhost/10-1.php 로 접속해서 이름과 내용을 적당히 쓰고 입력 버튼을 누릅니다

   나는 이름 : bbear, 내용 : hello world 라고 썼습니다

2. 글이 입력되었다고 메시지 뜰 것입니다

3. DB를 살펴봅니다

   윈도우 작업표시줄의 APMSETUP모니터 에서 마우스 우클릭 -> MySQL 관리 클릭 -> 아이디/비번 넣고 로그인(초기 아이디:root, 초기 비번: apmsetup) -> 좌측에서 oaphp 디비명을 클릭

 

 

위 그림과 같이 데이터가 들어있으면 성공입니다.