PHP分页类(收藏下)
这是那天不知道谁发的,具体忘记那个人了。
感觉这个类好像很牛B的样子,没实验过。。
<?php /** * page.class.php php 设计完美分页类 * Enter description here ... * @author Administrator * */ class Page { private $total; //数据表中总记录娄 private $listRows; // 每页显示 行数 private $limit ="LIMIT 0,5"; private $uri; private $pageNum; //页数 private $config=array('header'=>"条记录",'prev'=>"上一页",'next'=>"下一页",'first'=>"首页",'last'=>"尾页"); private $listNum=5; public Function __construct($total,$listRows=5,$parameter=''){ $this->total=$total; $this->listRows=$listRows; $this->uri=$this->getUri($parameter); $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; } //获取uri 参数 private Function getUri($parameter){ $url=$_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':'?').$parameter; $parse= parse_url($url); if(isset($parse['query'])){ parse_str($parse['query'],$params); unset($params['page']); $url=$parse['path'].'?'.http_build_query($params); } return $url; } private Function __get($args) { if($args=="limit"){ return $this->limit; }else{ return null; } } private function start(){ if($this->total==0){ return 0; }else{ return ($this->page-1)*$this->listRows+1; } } private function end(){ return min($this->page*$this->listRows,$this->total); } private function first(){ if($this->page==1){ $html .=" {$this->config['first']} "; }else{ $html .=" <a href='{$this->uri}&page=1'>{$this->config['first']}</a> "; } return $html; } private function prev(){ if($this->page==1){ $html .=" {$this->config['prev']} "; }else{ $html .=" <a href='{$this->uri}&page=".($this->page-1)."'>{$this->config['prev']}</a> "; } return $html; } private function pageList(){ $linkPage=""; $inum=floor($this->listNum/2); for($i=$inum; $i>=1; $i--){ $page=$this->page-$i; if($page<1){ continue; } $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){ $linkPage .="<a href='{$this->uri}&page={$page}'>{$page}</a> "; }else{ break; } } return $linkPage; } private function next(){ if($this->page==$this->pageNum){ $html .=" {$this->config['next']} "; }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 .=" {$this->config['last']} "; }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->page.':this.value;location.href=\''.$this->uri.'&page=\'+page+\'\'}" value='.$this->page.' style="width:23px" /><input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->page.':this.previousSibling.value;location.href=\''.$this->uri.'&page=\'+page+\'\'" /> '; } function fpage($display=array(0,1,2,3,4,5,6,7,8)){ $html[0]="共有<b>{$this->total}</b>{$this->config['header']} "; $html[1]="<b>{$this->page}/{$this->pageNum}</b>页 "; $html[2]="本页显示<b>".($this->end()-$this->start()+1)."</b>条,本页<b>{$this->start()}</b>-<b>{$this->end()}</b>条 "; $html[3]=$this->first(); $html[4]=$this->prev(); $html[5]=$this->pageList(); $html[6]=$this->next(); $html[7]=$this->last(); $html[8]=$this->goPage(); foreach ($display as $index){ $pp .=$html[$index]; } return $pp; } } ?>