PHP分页类
PHP #分页 #类2012-10-23 09:57
使用示例:
$page = new Page(99, 20, 'yige=php', 6); echo $page->show();效果:
99 条记录 1/5 页 <a href='?yige=php&page=2'>下一页</a> <span class='current'>1</span> <a href='?yige=php&page=2'> 2 </a> <a href='?yige=php&page=3'> 3 </a> <a href='?yige=php&page=4'> 4 </a> <a href='?yige=php&page=5'> 5 </a>类代码:
class Page { /* http://yige.org */ // 起始行数 public $firstRow ; // 列表每页显示行数 public $listRows ; // 页数跳转时要带的参数 public $parameter ; // 分页总页面数 protected $totalPages ; // 总行数 protected $totalRows ; // 当前页数 protected $nowPage ; // 分页的栏的总页数 protected $coolPages ; // 分页栏每页显示的页数 protected $rollPage ; // 分页显示定制 protected $config = array('header'=>'条记录','prev'=>'上一页','next'=>'下一页','first'=>'第一页','last'=>'最后一页','theme'=>' %totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%'); public function __construct($totalRows,$listRows=6,$parameter='',$rollPage=5) { $this->totalRows = $totalRows; $this->parameter = $parameter; $this->rollPage = $rollPage; $this->listRows = $listRows; $this->totalPages = ceil($this->totalRows/$this->listRows); //总页数 $this->coolPages = ceil($this->totalPages/$this->rollPage); $this->nowPage = !empty($_GET['page'])?$_GET['page']: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 show() { if(0 == $this->totalRows) return ''; $p = 'page'; $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 .= " <a href='".$url."&".$p."=$page'> ".$page." </a>"; }else{ break; } }else{ if($this->totalPages != 1){ $linkPage .= " <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; } }
相关文章
- php关联数组快速排序 2012/10/21
- php获取数组中重复数据的函数 2012/10/20
- PHP+MYSQL身份验证的方法 2012/10/20
- PHP找不到php_curl.dll的解决方法 2012/10/20
- PHP注入:谈MySql的SQL注入 2012/10/12
- php注入基本步骤 2012/10/11
- 使用php mongodb扩展时需要注意的地方 2012/09/13
- php函数file_get_contents超时处理 2012/07/13
- 注册页面用php来验证用户名是否存在。 2012/07/13
- PHP导出数据到Excel文件 2012/07/10