본문 바로가기
language/PHP

간단한 게시판 페이징 함수

by vamalboro 2008. 12. 6.
<?php
$currentPage = $_REQUEST["page"];
if(!$currentPage) $currentPage = 1;

$totalRecord = 151;  // 전체 레코드수
$recordPerPage = 10; // 페이지 당 뿌릴 레코드 수
$pagePerBlock = 10; // [1] ~ [10] 까지 한번에 10개씩

function handlePage($totalRecord,$recordPerPage,$pagePerBlock,$currentPage){ // 전체레코드,  페이지당 레코드수(10) , 블럭당페이지수(10), 현재페이지

    $totalNumOfPage = ceil($totalRecord/$recordPerPage); //16page
    $totalNumOfBlock = ceil($totalNumOfPage/$pagePerBlock); //2block
    $currentBlock = ceil($currentPage/$pagePerBlock); // 1page
        
    $startPage = ($currentBlock-1)*$pagePerBlock+1;  // 1page
    $endPage = $startPage+$pagePerBlock -1; // 10page
    if($endPage > $totalNumOfPage) $endPage = $totalNumOfPage;
    
    //NEXT,PREV 존재 여부
    $isNext = false;
    $isPrev = false;
    
    if($currentBlock < $totalNumOfBlock)    $isNext = true;
    if($currentBlock > 1)                     $isPrev = true;
    
    if($totalNumOfBlock == 1){
        $isNext = false;
        $isPrev = false;
    } 
    
    if($isPrev){
        $goPrevPage = $startPage-$pagePerBlock; // 11page
        echo "<a href=\"$PHP_SELF?page=$goPrevPage\">[PREV]</a>";        
    }    
    for($i=$startPage;$i<=$endPage;$i++){
        echo "<a href=\"$PHP_SELF?page=$i\">[".$i."]</a>";
    }
    if($isNext){
        $goNextPage = $startPage+$pagePerBlock; // 11page
        echo "<a href=\"$PHP_SELF?page=$goNextPage\">[NEXT]</a>";
    }        
}

handlePage($totalRecord,$recordPerPage,$pagePerBlock,$currentPage);

?>


'language > PHP' 카테고리의 다른 글

[펌] PHP 코드를 최적화하는 40가지 팁 (번역)  (0) 2008.02.12