<?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();
php分页类 增强版
最新推荐文章于 2025-06-04 15:47:57 发布