php之分頁類獨立完成(未精簡)
<?php /************ * *????subPage.class.php *????分頁類 * *************/ class?SubPage{ ????private?$sizeInPage;//每頁顯示多少條記錄 ????private?$totalRecord;//總共多少條記錄 ????private?$totalPage;//總共多少頁 ????private?$currentPage;//當前頁 ????private?$startIndex;//開始索引 ????private?$offset;//偏移數 ????private?$firstPage;//首頁 ????private?$endPage;//尾頁 ????private?$next;//下一頁 ????private?$last;//上一頁 ????private?$subPage_arr;//分頁數組 ????private?$subPage_count;//分頁數組顯示的個數 ????private?$resultSet;//結果集 ????/* ????*????@function?構造方法 ????*????@param????$size_in_page每頁顯示記錄數,$current_page當前頁,$toatal_record總記錄數,$subPage_count分頁列數組顯示的個數 ????*????@return? ????*/ ????public?function?__construct($size_in_page,$current_page,$total_record,$subPage_count){ ????????//$this->initPageArr($page_count); ????????$this->init($size_in_page,$current_page,$total_record,$subPage_count); ????????$this->setTotalPage(); ????????$this->setStartIndex(); ????????$this->setOffset(); ????????if($this->is_SubPage()){ ????????????//有分頁的情況 ????????????$this->setSubPageArr(); ????????} ????????else{ ????????????//沒有分頁的情況 ????????????$this->subPage_arr=array(); ????????} ????} ???? ????/* ????*????@function?初始化對象屬性 ????*????@param????$size_in_page每頁顯示記錄數,$current_page當前頁,$toatal_record總記錄數 ????*????@return????none ????*/ ????public?function?init($size_in_page,$current_page,$total_record,$subPage_count){ ????????$this->sizeInPage=$size_in_page; ????????$this->currentPage=$current_page; ????????$this->totalRecord=$total_record; ????????$this->subPage_count=$subPage_count; ????} ???? ????/* ????*????@function?設定總頁數? ????*/ ????public?function?setTotalPage(){ ????????$this->totalPage=ceil($this->totalRecord/$this->sizeInPage); ????} ???? ????/* ????*????@function?設定開始索引 ????*/ ????public?function?setStartIndex(){ ????????$this->startIndex=($this->currentPage-1)*$this->sizeInPage; ????} ???? ????/* ????*????@function?設定偏移量 ????*/ ????public?function?setOffset(){ ????????$this->offset=$this->sizeInPage; ????} ???? ????/* ????*????@function?設定首頁的頁數 ????*/ ????public?function?setFirstPage(){ ????????$this->firstPage=1; ????} ????/* ????*????@function?設定尾頁的頁數 ????*/ ????public?function?setEndPage(){ ????????$this->endPage=$this->totalPage; ????} ???? ????/* ????*????@function?設定下一頁的頁數 ????*/ ????public?function?setNext(){ ????????$tmp_next=$this->currentPage+1; ????????if($tmp_next>$this->totalPage){ ????????????$tmp_next=$this->totalPage; ????????} ????????$this->next=$tmp_next; ????} ???? ????/* ????*????@function?設定上一頁的頁數 ????*/ ????public?function?setLast(){ ????????$tmp_last=$this->currentPage-1; ????????if($tmp_last<1){ ????????????$tmp_last=1; ????????} ????????$this->last=$tmp_last; ????} ????/* ????*????@function?判斷是否有分頁 ????*????@return?boolean?返回true表示有分頁,false表示沒有 ????*/ ????public?function?is_SubPage(){ ????????if($this->totalPage>1){ ????????????return?true; ????????} ????????else{ ????????????return?false; ????????} ????} ???? ????/* ????*????@function?組裝分頁數組 ????*????@param?$start開始的頁碼數,$count幾個頁碼數 ????*/ ????public?function?initSubPageArr($start,$count){ ????????$arr=array(); ????????for($i=0;$i<$count;$i++,$start++){ ????????????$arr[$i]=$start; ????????} ????????$this->subPage_arr=$arr; ????} ???? ????/* ????*????@function?檢測數值是否奇數 ????*????@param?$num被檢測數 ????*????@return?boolean?返回true表示是奇數,返回false表示是偶數 ????*/ ????public?function?is_odd($num){ ????????if($num%2==0){ ????????????return?false; ????????} ????????else{ ????????????return?true; ????????} ????} ???? ????/* ????*????@function?設定分頁數組 ????*????@param?none ????*????@return?none ????*/ ????public?function?setSubPageArr(){ ????????if($this->totalPage<=$this->subPage_count){ ????????????//只有一輪數組 ????????????$start=1; ????????????$count=$this->totalPage-$start+1; ????????????$this->initSubPageArr($start,$count); ????????} ????????else{ ????????????if($this->currentPage<ceil($this->subPage_count/2)){ ????????????????//第一輪數組?當前頁小于均分數的情況 ????????????????$start=1; ????????????????$count=$this->subPage_count-$start+1; ????????????????$this->initSubPageArr($start,$count); ????????????} ????????????else?if($this->currentPage<=$this->totalPage?&&?$this->currentPage>($this->totalPage-ceil($this->subPage_count/2))){ ????????????????//最后一輪數組?當前頁大于總頁數-均分數 ????????????????$start=$this->totalPage-$this->subPage_count+1; ????????????????$count=$this->subPage_count; ????????????????$this->initSubPageArr($start,$count); ????????????} ????????????else{ ????????????????//其余情況 ????????????????if(($this->currentPage%$this->subPage_count)>ceil($this->subPage_count/2)){ ????????????????????//點到數組后半部分 ????????????????????$rs=$this->is_odd($this->subPage_count); ????????????????????if($rs===true){ ????????????????????????//顯示數是奇數 ????????????????????????$start=$this->currentPage-floor($this->subPage_count/2); ????????????????????????$count=$this->subPage_count; ????????????????????????$this->initSubPageArr($start,$count); ????????????????????} ????????????????????else{ ????????????????????????//顯示數是偶數 ????????????????????????$start=$this->currentPage-(($this->subPage_count/2)-1);//因為當前頁數也需要占1個位置 ????????????????????????$count=$this->subPage_count; ????????????????????????$this->initSubPageArr($start,$count); ????????????????????} ????????????????} ????????????????else{ ????????????????????//點到數組前半部分 ????????????????????$rs=$this->is_odd($this->subPage_count); ????????????????????if($rs===true){ ????????????????????????//顯示數是奇數 ????????????????????????$start=$this->currentPage-floor($this->subPage_count/2); ????????????????????????$count=$this->subPage_count; ????????????????????????$this->initSubPageArr($start,$count); ????????????????????} ????????????????????else{ ????????????????????????//顯示數是偶數 ????????????????????????$start=$this->currentPage-(($this->subPage_count/2)-1);//因為當前頁數也需要占1個位置 ????????????????????????$count=$this->subPage_count; ????????????????????????$this->initSubPageArr($start,$count); ????????????????????} ????????????????} ????????????} ????????} ????} ???? ????/* ????*????@function?查看分頁數的效果 ????*????@param?none ????*????@return?string?分頁碼效果 ????*/ ????public?function?showSubPageArr(){ ????????$arr=$this->subPage_arr; ????????$str=""; ????????foreach($arr?as?$key=>$value){ ????????????$str.=$value."_"; ????????} ????????$str=rtrim($str,"_"); ????????echo?$str; ????}???? } $subPage=new?SubPage(2,7,19,6); $subPage->showSubPageArr(); ?>
剛寫的一個分頁類,還未進行代碼精簡。各位大大們看看,哪里寫的不對的,希望各位大大,前輩指出。謝謝!本人菜鳥一個虛心求教。