php分页类 增强版
来源:互联网 发布:果园大爷事件知乎 编辑:程序博客网 时间:2024/05/03 20:00
<?php//==============分页类的实现===============/* *@param *$pageSize 每页大小 *$sumRecord 总记录条数 *$sumPage 总页数 *$currentPage 当前页数 *$url 页面的url地址 *$num 分页的数字显示个数 */class Page{ private $pageSize; private $sumRecord; private $sumPage; private $currentPage; private $url; private $num; public function __construct($sumRecord, $pageSize, $currentPage, $num=5) {$this->pageSize = $pageSize;$this->sumRecord = $sumRecord;$this->currentPage = $currentPage;$this->num = $num;$this->sumPage = ceil($this->sumRecord/$this->pageSize);$this->getUrl(); } private function first() //首页 {if($this->currentPage !=1 ){ return "<a href='".$this->url."1'>首页</a>\n";} else { return "首页\n";} } private function prevPage()//上一页 {if($this->currentPage > 1){ return "<a href='".$this->url.($this->currentPage-1)."'>上一页</a>\n";} else { return "上一页\n";} } private function middle()//中间的数字页面 {$middleStr = "";$start = 1;if($this->currentPage >=1 && $this->currentPage <= floor($this->num/2)+1) {//当前面小于显示页数的一半时 显示前num个 for($i=1; $i <= $this->num && $i <= $this->sumPage; $i++) {if($i == $this->currentPage){ $middleStr .=$i."\n";} else { $middleStr .="<a href='".$this->url.$i."'>".$i."</a>\n";} }}else if($this->currentPage >= ($this->sumPage- floor($this->num/2) ) ) {//当前面大于(总页数)减去(显示页数的一半)时 显示后num个 if(($this->sumPage - $this->num) > 0) {$start = $this->sumPage - $this->num + 1; } else {$start =1; } for($i= $start; $i <= $this->sumPage; $i++) {if($i == $this->currentPage){ $middleStr .=$i."\n";} else { $middleStr .="<a href='".$this->url.$i."'>".$i."</a>\n";} }} else { $start = $this->currentPage - floor($this->num/2) ; for($i = $start; $i < $start + $this->num; $i++) {if($i == $this->currentPage){ $middleStr .=$i."\n";} else { $middleStr .="<a href='".$this->url.$i."'>".$i."</a>\n";} }}return $middleStr; } private function postPage()//下一页 {if($this->currentPage < $this->sumPage){ return "<a href='".$this->url.($this->currentPage+1)."'>下一页</a>\n";} else { return "下一页\n";} } private function last() //尾页 {if($this->currentPage != $this->sumPage){ return "<a href='".$this->url.$this->sumPage."'>尾页</a>\n";} else { return "尾页\n";} } private function getUrl() {$url = $_SERVER['REQUEST_URI'];$param = parse_url($url);if(isset($param['query'])) { parse_str($param['query'],$query); unset($query['page']); if(count($query)) {$this->url = $param['path']."?".http_build_query($query)."&page="; } else {$this->url = $param['path']."?page="; }} else { $this->url = $param['path']."?page=";} } public function showPaging() {$str = "第{$this->currentPage}/{$this->sumPage}页 共{$this->sumRecord}条记录\n";$str .= $this->first();$str .= $this->prevPage();$str .= $this->middle();$str .= $this->postPage();$str .= $this->last();echo $str; }}$page = isset($_GET['page'])? $_GET['page']: 1;$pager = new Page(201, '20', $page);$pager->showPaging();