웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
공지사항|일기장 4강 - notice.php 간단한 글보이기
2003.10.16 21:54
벌써 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회분 늦게 연재됩니다.
태클은 언제나 환영입니다. 하지만 제가 금방확인할 수 있도록 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회분 늦게 연재됩니다.