PHP完美分頁類
<?phpclass Page{private $total; //數據表中總記錄數private $listrows; //每頁顯示行數private $limit;private $uri;//自動獲取url請求地址private $pageNum;//總頁數private $config = array(’header’=>’條記錄’,’prev’=>’上一頁’,’next’=>’下一頁’,’first’=>’首頁’,’last’=>’尾頁’);public function __construct($total,$listrows=10,$pa=''){$this->total = $total;$this->listrows = $listrows;$this->uri = $this->getUri($pa);$this->page = !empty($_GET[’page’]) ? $_GET[’page’]:1 ;$this->pageNum = ceil($this->total/$this->listrows);$this->limit = $this->setLimit();}private function setLimit(){return 'limit '.($this->page-1)*$this->listrows.’,’.$this->listrows;}public function getUri($pa){ $url = $_SERVER[’REQUEST_URI’].(strpos($_SERVER[’REQUEST_URI’],’?’)?’’:'?').$pa;$parse = parse_url($url); //返回一個數組,數組有元素query和pathif(isset($parse[’query’])){parse_str($parse[’query’],$params); //將query中的參數解析到$params,為數組unset($params[’page’]);$url = $parse[’path’].’?’.http_build_query($params); //按照指定的參數生成一個請求字符串}return $url;} //limit為私有屬性,通過這個魔術方法使limit變得可用private function __get($args){if($args=='limit'){return $this->limit;}else{return null;}}private function first(){if($this->page==1){$html.=’’;}else{ $html.=' <a href=’{$this->uri}&page=1’>{$this->config[’first’]}</a> ';}return $html;}private function prev(){if($this->page==1){$html.=’’;}else{ $html.=' <a href=’{$this->uri}&page='.($this->page-1).'’>{$this->config[’prev’]}</a> ';}return $html;}private function pagelist(){$linkPage=’’;//每邊顯示inum個頁碼$inum = 3;//左邊的頁碼for($i=$inum;$i>=1;$i--){$page = $this->page-$i;if($page<1){continue;}else{$linkPage.=' <a href=’{$this->uri}&page={$page}’>{$page}</a> ';}}//當前頁碼$linkPage.=' {$this->page} ';//右邊頁碼for($i=1;$i<=$inum;$i++){$page = $this->page+$i;if($page>$this->pageNum){break;}else{$linkPage.=' <a href=’{$this->uri}&page={$page}’>{$page}</a> ';}}return $linkPage;}private function next(){if($this->page==$this->pageNum){$html.=’’;}else{ $html.=' <a href=’{$this->uri}&page='.($this->page+1).'’>{$this->config[’next’]}</a> ';}return $html;}private function last(){if($this->page==$this->pageNum){$html.=’’;}else{ $html.=' <a href=’{$this->uri}&page={$this->pageNum}’>{$this->config[’last’]}</a> ';}return $html;}private function goPage(){return ’ <input type='text' onkeydown='javascript:if(event.keyCode==13){ var page=(this.value>’.$this->pageNum.’)?’.$this->pageNum.’:this.value; location=’’.$this->uri.’&page=’+page+’’ }' value='’.$this->page.’' ><input type='button' value='GO' onclick='javascript:varpage=(document.getElementById(’in’).value>’.$this->pageNum.’)?’.$this->pageNum.’:document.getElementById(’in’).value; location=’’.$this->uri.’&page=’+page+’’ '> ’;}//*可見的成員方法function fpage($arr=array(0,1,2,3,4,5,6,7)){$html[0]=' 共有<b>{$this->total}</b>{$this->config[’header’]} ';$html[1]=' {$this->page}/{$this->pageNum}頁 ';$html[2]=$this->first();$html[3]=$this->prev();$html[4]=$this->pageList();$html[5]=$this->next();$html[6]=$this->last();$html[7]=$this->goPage();$fpage=’’;foreach($arr as $index){$fpage.=$html[$index];}return $fpage;}}
相關文章: