페이징

인터넷관련 2008. 2. 16. 12:55

<?php
$page = $_REQUEST["page"];
if(!$page) $page = 1;

$total_num = 151;  // 전체 레코드수
$pagesize = 10; // 페이지 당 뿌릴 레코드 수
$pagePerBlock = 10; // [1] ~ [10] 까지 한번에 10개씩
$search = "&search=문자"; //GET 방식으로 추가 문자열을 넣는다
function handlePage($total_num,$pagesize,$pagePerBlock,$page,$search){ // 전체레코드,  페이지당 레코드수(10) , 블럭당페이지수(10), 현재페이지

    $totalNumOfPage = ceil($total_num/$pagesize); //16page
    $totalNumOfBlock = ceil($totalNumOfPage/$pagePerBlock); //2block
    $currentBlock = ceil($page/$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$search\">◀</a>";       
    }else{
        echo "◀";
    }
    for($i=$startPage;$i<=$endPage;$i++){
        if($page==$i){
            echo "<b>[".$i."]</b>";
        }else{
            echo "<a href=\"$PHP_SELF?page=$i$search\">[".$i."]</a>";
        }
    }
    if($isNext){
        $goNextPage = $startPage+$pagePerBlock; // 11page
        echo "<a href=\"$PHP_SELF?page=$goNextPage$search\">▶</a>";
    }else{
        echo "▶";
    }
}

handlePage($total_num,$pagesize,$pagePerBlock,$page,$search);
?>

,