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