<?php /************************************************************************************ * 完美分页类,可以自定义分页(比高胖老师的完美哈,O(∩_∩)O哈哈~) * ************************************************************************************ * 版权所有 (C) 2011-2012 北海情书-一个程序员博客,并保留所有权利。 * * * ********************************************************************************** * $Author: 北海情书 (hackmyth@163.com) $ * * $Date: 2011-07-18 10:00:00 $ * * **********************************************************************************/ class Page{ private $total; //数据总条数 private $listRows; //每页显示条数 private $limit; //限制条数 private $pageNum; //总页数 private $page; //当前页 private $config=array('head'=>"条记录", "prev"=>"上一页", "next"=>"下一页", "first"=>"首页", "last"=>"末页"); /** * 构造方法,可以设置分页类的属性 * @param int $total 计算分页的总记录数 * @param int $listRows 可选的,默认每页需要显示的记录数 * */ public function __construct($total,$listRows=10){ $this->total=$total; $this->listRows=$listRows; $this->pageNum=ceil($this->total/$this->listRows); //获取总页数 if($_GET['page']>$this->pageNum){ //防止过界 $_GET['page']=$this->pageNum; } $this->page=!empty($_GET['page'])?$_GET['page']:"1"; //当前页 $this->limit=$this->setPage(); //分页公式 } public function __get($args){ if($args=='limit'){ //过滤非法请求 return $this->limit; } return null; } //计算分页公式 private function setPage(){ return "limit ".($this->page-1)*$this->listRows.",".$this->listRows; } //上一页 private function prev(){ return "<a href='?page=".($this->page-1)."'>".$this->config['prev']."</a>"; } //下一页 private function next(){ return "<a href='?page=".($this->page+1)."'>".$this->config['next']."</a>"; } //首页 private function first(){ return "<a href='?page=1'>".$this->config['first']."</a>"; } //尾页 private function last(){ return "<a href='?page=".($this->pageNum)."'>".$this->config['last']."</a>"; } //分页列表 private function pagelist(){ $lists.=''; for($i=1;$i<$this->pageNum;$i++){ $lists.="<a href='?page=".$i."'>$i</a> "; } return $lists; } public function fpage($display=array(1,2,3,4,5)){ $html[1]= "共有".$this->total.$this->config['head']; $html[2]= $this->prev(); //上一页 $html[3]= $this->next(); //下一页 $html[4]= $this->first(); //首页 $html[5]= $this->last(); //尾页 $html[6]= $this->pagelist(); //列表 $fpage=''; foreach($display as $index){ $fpage.=$html[$index]; } return $fpage; } }
|