페이징 처리하기
게시물이 많은 경우 페이지를 나누어서 보여주는 것을 말한다.
다음은 mysql에서 사용되는 LIMIT로 페이징 처리하는 방법이다.
LIMIT 는 출력되는 레코드의 수를 제한할 때 사용된다.(시작은 0)
예를들어 SELECT * FROM board LIMIT 0, 10 이면 데이터베이스 안에 있는 게시물을 처음 레코드부터 10개만 가져오라는 의미가 된다.
[구현부]
if($_GET['page'] && $_GET['page'] > 0){
$page = $_GET['page'];
}else{
$page = 1;
}
$page_row = 5;// 한 페이지에 보일 글 수
$page_scale = 5;// 한줄에 보여질 페이지 수
$query = "SELECT count(*) FROM board";
$result = mysql_query($query, $conn);
$total = mysql_result($result,0,0);//전체 글 개수
$page_num = ceil($total/$page_row);//전체 페이지 수
$start_recode = ($page-1)*$page_row;
$paging_str = "";
if($page>1){
$paging_str .= "<a href=".$_SERVER['PHP_SELF']."?page=1\">[처음]</a>";
}
//페이징에 표시될 시작 페이지
$start_page = ((ceil($page/$page_scale)-1)*$page_scale)+1;
//페이징에 표시될 마지막 페이지
$end_page = $start_page+$page_scale-1;
if($end_page >= $page_num){$end_page=$page_num;}
//이전 페이징으로 가는 링크
if ($start_page > 1){
$paging_str .= "<a href='".$_SERVER['PHP_SELF']."?page=".($start_page-1)."'>[이전]</a>";
}
//페이지 출력 부분 링크
if ($page_num > 1) {
for ($i=$start_page;$i<=$end_page;$i++) {
// 현재 페이지가 아니면 링크 걸기
if ($page != $i){
$paging_str .= "<a href='".$_SERVER['PHP_SELF']."?page=".$i."'>[$i]</a>";
// 현재 페이지면 굵게 표시하기
}else{
$paging_str .= "<b>[$i]</b>";
}
}
}
//다음 페이징으로 가는 링크
if ($page_num > $end_page){
$paging_str .= "<a href='".$_SERVER['PHP_SELF']."?page=".($end_page+1)."'>[다음]</a>";
}
//마지막 페이지 링크
if ($page < $page_num) {
$paging_str .= "<a href='".$_SERVER['PHP_SELF']."?page=".$page_num."'>[끝]</a>";
}