웹마스터 팁

벌써 4강입니다. 그리 뛰어나지도않은 주저리를 봐주셔서 감사합니다(__);;
태클은 언제나 환영입니다. 하지만 제가 금방확인할 수 있도록 http://secre.vip.sh 에 올려주시면 감사하겠습니다!

이번에는, 리스트 뽑는 파일인 notice.php 를 만들어 보고,
select 쿼리문과, mysql_fetch_array 에 대하여 조금 알아보고 가겠습니다.

p.S 공지사항용으로 개발중이기때문에 일기장에 쓰일수 있을 페이지 등의 기능은 부가기능으로 따로 강의하겠습니다.

우리가 이 파일에서 쓰게될 select 쿼리의 구조는

select 필드1,필드2,,, from 테이블명 order by 정렬방식 limit 시작행,표시개수

위와같은 형태인데요, 한마디로 요약하면 select 쿼리는 어느 일정한 테이블에서,
정렬방식, 검색 등을해서, 그 정렬한 결과를 표시,저장하게되는 역할을 합니다.
우리가 쓸 쿼리를 만들어보면

select number, password, subject, writetime, name, memo from `nd_$db` order by number desc limit 0,$list_num
정렬방식은 number desc 로 number 필드를 기준으로 내림차순으로 정렬한다는 뜻입니다. 오름차순은 asc
limit 값을 보면, 시작행은 0 행, 고로 맨위에있는행에서 $list_num 만큼 정렬을 표시한다는것입니다.
저는 $list_num 값을 1을주도록 하겠습니다.

$result=mysql_query(쿼리문);

위와같이 작성했다면, 쿼리문의내용이 $result 에 임시적으로 저장되어있다고 보면 됩니다, //알아보기쉽게 하기위한 방법으로.
하지만 여기서, mysql 을 한번보면, 일정한 필드아래에서 데이터들이 베열되고 있다는것을 알수 있습니다.
그래서 우린 mysql_fetch_array() 를 사용하여야 하는것입니다.
mysql_fetch_array(쿼리)는 쿼리문을통해 얻어진 데이터들을 어느 한 배열로 나누는 것입니다.
다시말해, 테이블에 subject 필드가 있다면 subject 필드 안에 있는 데이터들중, number 필드를 내림차순정렬해서,
맨위에서 $list_num 의 수만큼의 subject 이하에있는 데이터를 가져온다는 뜻입니다.
그러므로, number 값이 1~5 까지 있고, 3개의 출력을 한다면, 3,4,5번값을 가진 데이터의 subject 안의 내용을 배열로 저장한다는것입니다.
그다음에 아래와같이 배열을 array 라는 변수에 저장합시다

$array=mysql_fetch_array($result);

이렇게 배열로 저장한 다음에,
while()를 이용해서 $array 에 저장된 배열을 페이지에 뿌려주도록 합시다.-
게시판의 목록표현은 이 while 문 안에서 모두 해결된답니다.
제목 데이터는 $array[subject]
내용 데이터는 $array[memo]
이름 데이터는 $array[name]
날짜 데이터는 $array[writename]

그럼 이제, 소스를 보면서 설명을 하도록 하죠.

<?

include "dbconn.php"; //DB연결

/*
멀티게시판을 사용할경우에,
페이지에 인클루드 하게되면, 절대경로가아닌 상대경로(URL) 을 입력해주여야합니다
그렇게되면, 심각한 속도저하와 트래픽이 문제가될 수있어요,
그래서 멀티게시판을 사용할 경우에는, 헤더,푸터 기능처럼
include 를 이용하여 목록출력 문구를 중앙에두고,
제로보드와같이 헤더푸터파일을 인클루드 해주어야합니다.
그렇게하여 본 파일인 notice.php?db=디비명 으로 불러주면, 공지사항이 인크루드된
페이지를 볼 수 있습니다
*/

//멀티기능일경우에, $db 값의 유뮤 채크
if(!$db) {
        echo "게시판명을 지정해 주세요
ex).php?db=디비명";
        exit;
}

/*

DB 데이터를 불러오는 쿼리는 select 뭐리로,
select 필드1,필드2,,, from 테이블명 order by 정렬방식 limit 시작행,표시개수
위와같은방식으로 작성됩니다,
저는 하나만 출력하도록 하죠
P.S>>쿼리문을 작성하기전에 phpmyadmin 을 이용해서 쿼리문의 실행 유무를 확인하는것도
좋은방법입니다

저는 페이지당 하나만 표시하도록 하겠습니다
글 번호기능은 필요없겠죠
최신 글목록부터 보게할것이므로
number 필드를 기준으로, 내림차순정력인 desc 를 선택합니다.

*/
$list_num = 1; //한페이지에 보여줄 글의 갯수

$result=mysql_query("select number, password, subject, writetime, name, memo from `nd_$db` order by number desc limit 0,$list_num") or die (mysql_error()); //쿼리문 실행 결과

//본격적으로 데이터를 뿌린다음에 출력 해 봅시다
while ($array=mysql_fetch_array($result)) { //위에서 저장한 쿼리의 내용들을 출력합니다.
$date=date("Y/m/d", $array[writetime]); //저장된 시간을 Y/M/D 를 이용해서 날짜로 변환시킵니다 date 함수사용해서요.
//백슬레쉬 제거, 특수문자 변환 (HTML)
$array[subject]=stripslashes($array[subject]);
$array[memo]=stripslashes($array[memo]);
$array[memo]=nl2br($array[memo]); //<br>태그 넣기

/*
디자인은 짜놓지 않았습니다;
*/
$date=date("Y/m/d", $array[writetime]); //저장된 시간을 Y/M/D 를 이용해서 날짜로 변환시킵니다 date 함수사용해서요.
?>
<input type=hidden name=db value=<?=$db?>>
<input type=hidden name=number value=<?$number?>>

<!-디자인을 하셔서 이자리에 넣으시면 되는것입니다. ! 아래의 echo 문 2개 는 지우시구요 ->
<?
//히든 인풋을 삽입합니다. number 는 나중에 수정프로그램을 짤때필요.

echo $array[subject]."/br"; //제목출력 따로 디자인을 하실때 지우세요 그리고 적절한곳에 변수입력
echo $array[memo]."/br"; //내용출력 따로 디자인하실때 지우세요 그리고 적절한 곳에 변수입력
echo $date; //날짜출력 따로 디자인하실때 지우세요. 그리고 적절한곳에 $date 를 입력
}

?>

위와 같습니다. 간단하죠?
(디자인은 전혀 하지 않았습니다.)

만약 디자인을 만들고 싶으실때는, html로 틀을 짜고,  히든인풋이 있는 ?>과 <? 사이에 넣어주신뒤
제목이 들어갈 부분에는 <? echo $array[필드명]; ?>와 같은형식으로 넣어주세요.
제 사이트에서 사용하기위해 디자인한것은, 더 나는 프로젝트를 위해! 게시판에 올려놓도록 하겠습니다.

이 프로젝트는 http://secre.vip.sh 에서 진행되고,
http://nzeo.com 에서 2회분 늦게 연재됩니다.
제목 글쓴이 날짜
접속자의 IP를 화일로 저장(기능추가) [27] 전원주 2003.11.06
호스팅업체에서 GD를 지원하는지 여부를 알 수 있게해주는 소스 [12] Wizard 2003.11.05
홈페이지 관리자 모드 구축하기 (HTTP 인증, 중복 맞음) [10] file 9000㎒ 2003.11.01
include, onload, <span id=...> 다계층메뉴 활용 강좌 [2] 김병희 2003.10.25
신문기사 긁어오기 [28] horizon 2003.10.20
공지사항|일기장 4강 - notice.php 간단한 글보이기 시루바 2003.10.16
최신인기가요 순위 한방에 뽑아오기 [10] 제누스 2003.10.16
알기쉬운 웹용 MySQL 관리도구, phpMyAdmin 설치하기 [10] 허창원 2003.10.11
MSN Messenger Class - file HungryMania 2003.10.10
공지사항|일기장 3장 write_ok.php //간단한 입력쿼리문//수정 [5] 시루바 2003.10.08
내 홈페이지의 방문자 어디서 접속했을까 알아봅시다 [21] file 버찌소년 2003.10.08
공지사항|일기장 프로그램 2장:코딩구조와write.php [2] 시루바 2003.10.02
[초보] 확장자 체크하는 매우 간단한 소스; [4] 에지 2003.09.29
인터넷 사이트 , MS 오피스로 관리하기 3 공시사항 나타내기 [5] file 한꼬마 2003.09.24
Whois를 이용해서 접속자가 사용하는 ISP출력(한국통신,하나로,두루넷 등등) [6] 김재경 2003.09.23
달력 만들기 [10] TheMics 2003.09.23
php+mysql>>공지사항|일기장 프로그램 1장:DB구조,schema 파일로 테이블생성하기! [2] 시루바 2003.09.23
인터넷 사이트, MS 오피스로 관리하기 2 공지사항 [4] file 한꼬마 2003.09.23
인터넷 사이트 , MS 오피스로 관리하기 [3] file 한꼬마 2003.09.22
임시적으로 php.ini 환경변수들 대처하기 [2] impre 2003.09.20