포스팅을 옮기면서 본건데 게시판 글 목록을 보는 list.php가 없네요 ㄷㄷ;;;
작성해 보도록 하겠습니다.
list.php |
$no=($_GET['no'])?$_GET['no']:0;
no라는 변수에 삼항연산자를 써서 작성합니다.
삼항 연산자는 [ 조건 ? 참 : 거짓 ]
모양입니다. 즉 위의 식은 GET['no']가 있는지( GET으로 받아오는 no변수가 있는지?)
있다면 no변수에 GET으로 받아온 것을 넣고 없다면 0을 no에 넣습니다.
$page_size=10;
$page_list_size=10;
한 페이지당 나타낼 게시물 수를 page_size에 넣습니다. 저는 열 개씩 하겠습니다.
페이지 블록 수도 10개로 잡겠습니다. 페이지 블록은 게시판 아래에 1 2 3 4 5 이런식으로 나오는 구간 입니다.
$query="select id,thread,depth,name,email,title,comment,DATE_FORMAT(wdate,'%Y-%m-%d') as wdate, see,cmt_cnt,filename from $board order by thread desc limit $no,$page_size";
sql 쿼리문을 작성합니다.
게시판 글 목록에 보여줄 사항들을 select 해옵니다.wdate는 ㅇㅇㅇㅇ-ㅇㅇ-ㅇㅇ 식으로 포맷을 바꿔주고 wdate라고 명칭으로 명명해줍니다.
limit는 no번째부터 page_size만큼을 불러옵니다.
즉 limit 1,10이면 1부터 10까지, limit 2,10이면 2부터 11까지 나옵니다.
이런식으로 말이죠
이것을 활용해서 1페이지엔 1~10번, 2페이지엔 11~20번 이렇게 구성을 할겁니다.
$result_count=mysql_query("select count(*) from $board",$conn);
$result_row=mysql_fetch_array($result_count);
$total_row=$result_row[0];
if($total_row<=0)$total_row=0;
$total_page=floor(($total_row-1)/$page_size);
$current_page=floor($no/$page_size);
total_row는 글 게시판 DB에있는 글의 갯수를 저장합니다.
total_page는 총 페이지 갯수입니다.(출력시엔 +1을 합니다. 게시물이 25개면 total_page는 2가 맞습니다.)
<?
$start_page=(int)($current_page/$page_list_size)*$page_list_size;
$end_page=$start_page+$page_list_size-1;
if($total_page<$end_page)$end_page=$total_page;
start_page는 current_page에서 10을 나눈뒤 정수만을 취한 뒤 10을 다시 곱합니다.
예시 ) 현재 1~10에 있다면 no또한 0~90 입니다. no에 page_size인 10을 나누고 소숫점을 버린 값을 current_page가 가져갑니다. 즉 current_page=0~9입니다.
start_page는 0~9를 10으로 나눈뒤 정수만을 가집니다 즉 0~9 어느숫자든 10으로 나누고 정수를 가지면 0이 나옵니다. 0*10=0이 됩니다.
현재 페이지가 11~20이라면 start_page는 10이나오겠네요
end_page는 start_page에 +10 -1을 합니다 9를 더하는 이유는 마지막 숫자가 10 20 30 이런식으로 하기 위함입니다.
if($start_page>=$page_list_size){
$prev_list=($start_page-1)*$page_size;
echo "a href=$_SERVER[PHP_SELF]?no=$prev_list>[prev]</a>";
}
start_page가 10이 넘어간다면(현재 있는 블록이 11~20이상이라면) 이전 페이지가 있다는 것이겠지요?? 그때 [prev]버튼을 생성합니다.
for($i=$start_page;$i<=$end_page;$i++){
$page=$page_size*$i;
$page_num=$i+1;
if($no!=$page){
echo "<a href=list.php?no=$page>";
}
echo "$page_num ";
if($no!=$page){
echo "</a>";
}
start_page부터 end_page까지 반복을 시켜 원하는 페이지로 이동할 수 있게끔 <a>태그를 씁니다
no변수와 page변수가 같다면 <a>태그를 생성하지 않습니다.
(현재의 페이지는 <a>가 발생하지 않습니다.)
}
if($total_page>$end_page){
$next_list=($end_page+1)*$page_size;
echo "<a href=list.php?no=$next_list> [next]</a>";
}
?>
prev버튼과 마찬가지로 total_page가 end_page인 10, 20, 30이 넘어간다면 next페이지 버튼을 생성합니다.
이로써 list.php를 완성했습니다. ㅎㅎ 코드가 기네요
'IT > PHP' 카테고리의 다른 글
14##]PHP로 홈페이지 만들기>글 읽기 (0) | 2017.04.22 |
---|---|
12##]PHP로 홈페이지 만들기>글쓰기 완료 (0) | 2017.04.22 |
11##]PHP로 홈페이지 만들기>게시판 DB만들기 (0) | 2017.04.22 |