커피와 개발자

페이징 처리하기 본문

웹개발/PHP

페이징 처리하기

광박이 2010. 5. 7. 09:28
728x90


게시물이 많은 경우 페이지를 나누어서 보여주는 것을 말한다.
다음은 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>";
}

728x90

'웹개발 > PHP' 카테고리의 다른 글

[PHP] 배열 함수 매뉴얼  (0) 2010.05.20
[PHP] Checkbox 배열값 가져오기  (0) 2010.05.19
치환 함수 str_replace()  (0) 2009.09.28
파일 다운로드 페이지  (0) 2009.09.08
php 엑셀파일로 데이터 저장하기  (0) 2009.08.31
Comments