//Page.class.php(分页类封装)------------------------------
<?php
header("Content-Type:text/html;charset=utf-8");
class Page{
public $total; //总记录数
public $page_size; //每页显示记录数
public $total_page; //总页数
public $cur_page; //当前页
//定义构造方法,给成员属性赋初值
function __construct($total,$page_size){
$this->total = $total;
$this->page_size = $page_size;
$this->total_page = $this->getTotalPage();
$this->cur_page = $this->getCurPage();
}
//定义出口程序,用于输出分页类的效果
function pages(){
echo "共".$this->total_page."页
当前第".$this->cur_page."页 "
.$this->flist()
.$this->listNum()
.$this->llist();
}
//定义成员方法,获取总页数
private function getTotalPage(){
//ceil(总记录数/每页显示记录数)
$total_page = ceil($this->total/$this->page_size);
return $total_page;
}
//获取当前页
private function getCurPage(){
//http://localhost/Page.class.php
$cur_page = isset($_GET['p'])?$_GET['p']:1;
//$cur_page = 1
//$this->total_page = 0
//对当前页的取值进行判断
if($cur_page<1){
$cur_page=1;
}else if($cur_page>$this->total_page&&$this->total_page!=0){
$cur_page=$this->total_page;
}
return $cur_page;
}
// 1 2 3 4 5 6 7
private function listNum(){
//定义队列长度
$num = 3;
//1 2 3
$lists = "";
for($i=$num;$i>=1;$i--){
$n = $this->cur_page-$i;
if($n>=1){
$lists.=" <a href='?p=".$n."'>$n</a> ";
}
}
//连接上当前页
$lists .= " ".$this->cur_page." ";
//5 6 7
for($i=1;$i<=$num;$i++){
//$n = 11+1=12
$n = $this->cur_page+$i;
if($n<=$this->total_page){
$lists.=" <a href='?p=".$n."'>$n</a> ";
}
}
return $lists;
}
//首页 上一页
private function flist(){
//$prev = 1-1 = 0
//$prev = 2-1 = 1
$prev = $this->cur_page-1;
$lists = "";
if($prev>=1){
$lists = "<a href='?p=1'>首页</a>
<a href='?p=".$prev."'>上一页</a>";
}
return $lists;
}
//下一页 尾页
private function llist(){
//$next = 10+1 = 11
//$next = 11+1 = 12
$next = $this->cur_page+1;
$lists = "";
if($next<=$this->total_page){
$lists = " <a href='?p=".$next."'>下一页</a>
<a href='?p=".$this->total_page."'>尾页</a>";
}
return $lists;
}
}
//总记录数52
$total = 52;
//每页显示的记录数
$page_size = 5;
$p = new Page($total,$page_size);
$p->pages();
PHP分页功能使用类封装实现
最新推荐文章于 2021-03-08 22:46:09 发布