홈>컴퓨터이야기
logo_01.gif


TOTAL ARTICLE : 35, TOTAL PAGE : 1 / 2
구분 웹일반 | 태그-소스 | 제로보드 | 그누보드 |
제로보드 : 최근 게시물을 나타내는 원리와 방법
 오예    | 2006·05·27 16:54 | HIT : 1,798 | VOTE : 77
php로 만들어진 게시판 CGI인 경우 최근게시물과 같은 효과적인 출력물을 얻을수가 있습니다.

지금 저두 사용하구 있죠.

그리고 메인화면에 있는 공지사항도 따로 프로그램을 만든것이 아니라 게시판에 있는 자료를 불러오는 겁니다.

그럼 이 최근게시물이라는 것이 어떤 원리로 구현되는지 알아보죠.

php로 만든 게시판의 경우 대다수가 DB를 이용해서 데이타가 저장이 됩니다.

그럼 이 DB가 몬지는 아시죠?

MySQL과 같은 DBMS 프로그램을 이용해서 어떤 형식에 의해서 저장되는 거죠.

그럼 감 잡으신분 계시죠?

어떤 형식으로 DB에 데이타가 저장되더라도 우리는 MySQL의 Query를 통해서 원하는 데이타를 가져올수가 있는겁니다.

즉, 게시판이 아닌 방명록으로도 충분히 공지사항을 나타낼수가 있죠.

그럼 DB에서 원하는 자료를 가져오는 순서를 알아봅시다.

1. 당근 MySQL DB서버에 접근을 해야겠죠.
  (mysql_connect() 함수로 하면 되죠)

2. 접근한 DB서버에서 원하는 데이타가 있는 자신의 db로 연결을 해야죠/
  (mysql_select_db() 함수로 접근하죠)

3. 그 DB중에서 실제로 자료를 담구 있는 테이블에서 최근 게시물을 가져와야겠죠.
  ( select query와 mysel_query() 함수를 쓰면 됩니다)

쉽죠?

그럼 이 하나하나를 실제로 해봅시다.

파일이름은 new_list.html 로 해봅시다. (new_list.php3로 해도 당근 되죠~~ ^^)

자신의 DB에 대한 정보를 변수로 지정합시다.

그래야 자주 쓰일때 편하죠.

$host_name = "localhost";    // DB서버의 위치입니다.
$user_name = "?????";        // 자신의 계정의 ID를 넣으시면 되요.
$user_password = "*****";  // 자신의 DB의 Password 입니다.
$db_name ="?????";            // 자신이 사용할 DB의 이름입니다.


그러면 msyql_connect()함수를 써서 DB서버에 접근을 해야겠죠.

$connect = mysql_connect($host_name,$user_name,$user_password);

위와 같이 하면 지정된 서버에 접근을 한후 결과값을 $connect에 돌려줍니다.

제대로 접근이 되었다면 1 이라는 값을 리턴하구 아니면 0을 리턴하죠.

그럼 자신의 DB를 선택해야 겠죠?

mysql_select_db($db_name, $connect);

이제 최근게시물을 뽑아오기 위한 준비단계가 끝났습니다.

그럼 이제 query (DB프로그램의 언어라는거 아시죠?)를 이용해서 필요한 데이타를 DB에서 가져옵시다.

$que = "SELECT * FROM board order by date desc limit 5";

위와 같이 하면 되죠.

먼저 select * from board 는 board라는 테이블에서 모든 자료를 선택한다는 거에요.

뒤에 order by date desc 라는 구문이 있죠?

그거는 date 라는 날짜 데이타를 역순(desc)으로 정렬하라는 거죠.

그 뒤에 limit 5 는 5개로 제한하라는 겁니다. 원하는 숫자로 바꾸면 되죠.

그럼 $que 라는 문자열 변수에는 board라는 테이블에서 날짜역순으로 정렬된 5개의 자료를 가져와라는 query가 있는거죠.

그럼 이 query를 MySQL 프로그램에 전달해줘서 실제적으로 일을 시켜야죠.

$result =mysql_query($que,$connect);

mysql_query() query에 명령한대로 자료를 뽑아서 $result 라는 변수에 담아줍니다.

그런데 $result에는 MySQL에서의 데이타 형식으로 자료가 저장되어 있어요.

그럼 우선 몇개의 값이 왔는지를 알아봐야겠죠?

물론 limit 5 라는 query로 5개를 뽑아오라구 해놓고 왜 몇개인지를 알아야 하느냐는 분도 계시겠죠~

총 게시물이 3개만 있으면 당연히 5개의 데이타를 못가져오잖아요...

이 리턴된 자료의 갯수를 알아보는 함수가 mysql_affected_rows() 라는 함수입니다.

$total = mysql_affected_rows();

위와 같이 하면 최근에 select query를 사용해서 가져온 자료의 갯수를 알수 있습니다.

그런데 현재 $result에 저장된 자료는 MySQL의 형식으로 저장이 되어 있습니다.

이 자료를 우리가 직접 사용할수 있게 배열 형식으로 바꾸어야 하죠.

바로 mysql_fetch_array() 라는 함수를 사용하면 됩니다.

$new_bbs =mysql_fetch_array($result );

처음에 $result에는 첫번째 자료에 pointer가 있는 상태입니다.

위와 같이 해주면 첫번째 자료를 $new_bbs라는 변수에 배열로 리턴합니다.

그러고는 $result에서 2번재 자료로 pointer을 옮겨줍니다.

그럼 실제로 사용해보죠.

for($i=1; $i<=$total; $i++)
{
  $new_bbs =mysql_fetch_array($result );
  $new_bbs[name]=stripslashes($new_bbs[name]);
  $new[subject]=stripslashes($new[subject]);
  echo "작성자 : $new_bbs[name], 제목 : $new[subject]";
}

자 위에 구문을 보면 $i 라는 루프변수를 사용해서 전체갯수만큼 루프합니다.

그리고 mysql_fetch_array() 함수를 사용해서 $new_bbs 변수에 데이타를 가져오죠.

그러고는 echo "  " 를 사용해서 출력을 하는 겁니다.

$new_bbs[name] 은 글쓴이의 이름입니다.

현재 ZeroBoard에는 사용자의 이름을 name 이라는 스키마를 사용했습니다.

다른 php 게시판은 만든이의 맘이니깐 write로 되어 있을수도 있죠.

만약 본문을 출력하고 싶으면 $new_bbs[memo] 라고 하면 되겠죠?

근데 stripslashes() 라는 함수가 몰까요?

MySQL DB에 자료를 저장할대 '(홑따옴표) 와 같은 문자들은 에러를 유발합니다.

그래서 DB에 자료를 저장하기 전에 addslashes() 라는 함수로 에러를 유발하는 문자앞에  를 붙여줍니다.

그러니깐 당근 자료를 가져와서 출력할대는  를 떼어줘야 겠죠?

그때 쓰는 변수가 stripslashes() 입니다.

이상 끝~~~
샬롬~
난! 자유인...
  
35 제로보드   mysql 4.1에서 제로보드의 호환성 문제 해결  오예 16·01·15 327 25
34 제로보드   제로보드 관리자 비번 잊어버렸을때  오예 11·06·28 1826 49
33 제로보드   최근게시물에 비밀글도 출력하기  오예 09·10·21 2945 215
32 제로보드   제로보드 2009.9.22 보안 취약점 패치  오예 09·09·29 4830 291
31 제로보드   지엠스팸프리(ZmSpamFree)  오예 09·08·30 2772 187
30 제로보드   제로보드 관리자계정 접속이 안될때  오예 09·07·12 2629 151
29 제로보드   갤러리에 한글이름 적용하기  오예 09·06·29 3628 217
28 제로보드   DQ Revolution 1.8.p9 최근갤러리에 썸네일 불러오기  오예 09·03·20 3660 149
27 제로보드   제로보드 스팸방지기능(ZM_Crypt 2.0)  오예 09·02·06 3885 191
26 제로보드   제로보드 서버 이전 방법  오예 08·09·19 3758 230
25 제로보드   제로보드 스팸광고게시물,덧글 자동등록 방지 ZM_Crypt 2.0  오예 08·08·19 3035 181
24 제로보드   미니위니 에디터 FAQ  오예 07·10·31 5517 121
23 제로보드   제로보드 스팸 차단하기  오예 07·05·03 3581 68
22 제로보드   새계정 이사할때, 그대로 옮기기 - DB백업,복구, data백업,복구 방법, 권한설정  오예 07·03·10 1981 67
21 제로보드   최근게시물에 답글과 비밀글 표시하기  오예 06·12·26 2408 64
20 제로보드   최고 관리자 아이디, 비밀번호 잃어버렸을때  오예 06·08·21 1910 75
19 제로보드   그림 파일명에 한글이 포함될 경우 영문자, 숫자로 이름 자동 변경하기  오예 06·07·03 2101 73
18 제로보드   제로보드 게시물 순서 바꾸기  오예 06·06·19 1905 74
제로보드   최근 게시물을 나타내는 원리와 방법  오예 06·05·27 1798 77
16 제로보드   특정 회원사진 출력 안되는 문제  오예 06·05·01 1663 58
12
Copyright 1999-2019 Zeroboard / skin by GGAMBO