PHP分頁類
class PageTool{ private $nums; //總條目數 private $eachNums;//每頁顯示的條目數 private $pages;//總頁數 private $eachPages;//每次顯示的頁數 private $currentPage;//當前選中頁 private $pageArray=array();//分頁數組 /* @ 實例后__construct()方法自動執行,需傳入以下參數 @$nums 總條目數 @$eachNums 每頁顯示的條目數 @$eachPages 每次顯示的頁數 @$currentPage 當前選中的頁數(可選參數) */ public function __construct($nums,$eachNums,$eachPages=1,$currentPage=1){ //頭信息,用UTF8顯示 header('Content-type:text/html;charset=utf-8'); //總條目數 $this->nums=$nums; //每頁顯示的條目數 $this->eachNums=$eachNums; //總頁數 $this->pages=ceil($nums/$eachNums); //每次顯示的頁數 if($eachPages>=$this->pages){ $this->eachPages=$this->pages; }else{ $this->eachPages=$eachPages; } /* 當前選中頁 如果傳了值并且大于計算出的總頁數,則選中頁默認為最后一頁 否則檢測地址欄是否有page數,若有則設為當前選中頁,否則默認為空 */ if(!empty($currentPage)&&$currentPage>$this->pages){ $this->currentPage=$this->pages; }else{ $this->currentPage=isset($_GET['page'])?$_GET['page']+0:$currentPage; } //生成分頁數組 $this->pageArray($eachPages); } //當對象失去所有引用或顯示銷毀時,則自動調用__destruct()方法,自動銷毀屬性. public function __destruct(){ unset($this->nums); unset($this->eachNums); unset($this->pages); unset($this->eachPages); unset($this->currentPage); unset($this->pageArray); } //建立分頁數組(用于顯示每次顯示的頁碼) //如顯示十頁: 1 2 3 4 5 6 7 8 9 10 protected function pageArray(){ for($i=0;$i<$this->eachPages;$i++){ $this->pageArray[$i]=$i; } return $this->pageArray; } //選中某頁后顯示的頁條目 protected function showPages(){ //顯示頁數的數組 $showPages=$this->pageArray; if($this->eachPages>=$this->pages){ for($i=0;$i<$this->pages;$i++){ $showPages[$i]=$i+1; } }else if($this->currentPage<=3){ for($i=0;$i$showPages[$i]=$i+1; } }else if($this->currentPage<=$this->pages && $this->currentPage>($this->pages-$this->eachPages+1)){ for($i=0;$i<$this->eachPages;$i++){ $showPages[$i]=($this->pages-$this->eachPages)+1+$i; } }else{ for($i=0;$i<$this->eachPages;$i++){ $showPages[$i]=$this->currentPage-2+$i; } } return $showPages; } //完成分頁 public function constructPages(){ //當前頁 $str='當前'.$this->currentPage.'/'.$this->pages.'頁'; //上頁 if($this->currentPage<=1){$upPage=1;}else{$upPage=$this->currentPage-1;} //下頁 if($this->currentPage>=$this->pages){$downPage=$this->pages;}else{$downPage=$this->currentPage+1;} //最后頁 $lastPage=$this->pages; //腳本名 $script_name=$_SERVER['SCRIPT_NAME']; //?后的字符串 $query_string=$_SERVER['QUERY_STRING']; $arr=array(); //?后的字符串處理成數組 parse_str($query_string,$arr); //刪除page項 unset($arr['page']); //將數組轉換成新的string地址 $query_string=http_build_query($arr); //組成新的URL if(empty($query_string)){ $url=$script_name.'?'; } $url=$script_name.'?'.$query_string.'&'; //生成分頁數組 $showPages=$this->showPages(); //循環出分頁 $URL=''; foreach($showPages as $v){ if($v==$this->currentPage){ $URL.=''.'['.$v.'] '; }else{ $URL.=''.'['.$v.']'.' '; } } //首頁 $firstPage=''.'首頁'.' '; //上一頁 $up=''.'上一頁'.' '; //下一頁 $down=''.'下一頁'.' '; //尾頁 $last=''.'尾頁'.' '; return $firstPage.$up.$URL.$down.$last; } } //$page=new PageTool(50,5,5); //echo $page->constructPages();
本文由用戶 b4c2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!