PHP自動生成分頁連結
阿新 • • 發佈:2019-01-05
<?php class Page { // 分頁欄每頁顯示的頁數 public $rollPage = 5; // 頁數跳轉時要帶的引數 public $parameter ; // 預設列表每頁顯示行數 public $listRows = 20; // 起始行數 public $firstRow ; // 分頁總頁面數 protected $totalPages ; // 總行數 protected $totalRows ; // 當前頁數 protected $nowPage ; // 分頁的欄的總頁數 protected $coolPages ; // 分頁顯示定製 protected $config = array('prev'=>'上一頁','next'=>'下一頁','first'=>'第一頁','last'=>'最後一頁','theme'=>'%upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%'); // 預設分頁變數名 protected $varPage; public function __construct($totalRows,$listRows='',$parameter='') { $this->totalRows = $totalRows; $this->parameter = $parameter; if(!empty($listRows)) { $this->listRows = intval($listRows); } $this->totalPages = ceil($this->totalRows/$this->listRows); //總頁數 $this->coolPages = ceil($this->totalPages/$this->rollPage); $this->nowPage = !empty($_GET[$this->varPage])?intval($_GET[$this->varPage]):1; if(!empty($this->totalPages) && $this->nowPage>$this->totalPages) { $this->nowPage = $this->totalPages; } $this->firstRow = $this->listRows*($this->nowPage-1); } public function setConfig($name,$value) { if(isset($this->config[$name])) { $this->config[$name] = $value; } } public function shows(){ $data['nowPage']=$this->nowPage; $data['totalPages']=$this->totalPages; return $data; } public function show() { if(0 == $this->totalRows) return ''; $p = $this->varPage; $nowCoolPage = ceil($this->nowPage/$this->rollPage); $url = $_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"?").$this->parameter; $parse = parse_url($url); if(isset($parse['query'])) { parse_str($parse['query'],$params); unset($params[$p]); $url = $parse['path'].'?'.http_build_query($params); } //上下翻頁字串 $upRow = $this->nowPage-1; $downRow = $this->nowPage+1; if ($upRow>0){ $upPage="<a href='".$url."&".$p."=$upRow'>".$this->config['prev']."</a>"; }else{ $upPage=""; } if ($downRow <= $this->totalPages){ $downPage="<a href='".$url."&".$p."=$downRow'>".$this->config['next']."</a>"; }else{ $downPage=""; } // << < > >> if($nowCoolPage == 1){ $theFirst = ""; $prePage = ""; }else{ $preRow = $this->nowPage-$this->rollPage; $prePage = "<a href='".$url."&".$p."=$preRow' >上".$this->rollPage."頁</a>"; $theFirst = "<a href='".$url."&".$p."=1' >".$this->config['first']."</a>"; } if($nowCoolPage == $this->coolPages){ $nextPage = ""; $theEnd=""; }else{ $nextRow = $this->nowPage+$this->rollPage; $theEndRow = $this->totalPages; $nextPage = "<a href='".$url."&".$p."=$nextRow' >下".$this->rollPage."頁</a>"; $theEnd = "<a href='".$url."&".$p."=$theEndRow' >".$this->config['last']."</a>"; } // 1 2 3 4 5 $linkPage = ""; for($i=1;$i<=$this->rollPage;$i++){ $page=($nowCoolPage-1)*$this->rollPage+$i; if($page!=$this->nowPage){ if($page<=$this->totalPages){ $linkPage .= "&nbsp;<a href='".$url."&".$p."=$page'>&nbsp;".$page."&nbsp;</a>"; }else{ break; } }else{ if($this->totalPages != 1){ $linkPage .= "&nbsp;<span class='current'>".$page."</span>"; } } } $pageStr = str_replace( array('%header%','%nowPage%','%totalRow%','%totalPage%','%upPage%','%downPage%','%first%','%prePage%','%linkPage%','%nextPage%','%end%'), array($this->config['header'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd),$this->config['theme']); return $pageStr; } }