PHP+MySQL中实现分页

时间:2021-03-13 14:35:24

你只需要在需要添加页的页面加入这几行代码

<?php
include 'form.class.php';

$p=new Page(100, 'Demo01.php');//这里需要传递两个参数,参数一是分页中每页默认要显示的条数,参数二是本页面的链接地址

echo $p->ShowDiv();

?>

实现分类的页Page.class.php

<?php
class Page{
private $pageNum; //当前页
private $pageCount; //总页数
private $pageSize; //每页行数
private $rowCount; //总行数
private $url; //转跳的原地址

//__get()方法用来获取私有属性
public function __get($property_name)
{
if(isset($this->$property_name))
{
return($this->$property_name);
}
else
{
return(NULL);
}
}
//__set()方法用来设置私有属性
public function __set($property_name, $value)
{
$this->$property_name = $value;
}

//给以上变量赋值
function __construct($rowCount,$url){
//在地址栏取pageNum和pageSize变量的值
if(isset($_GET["page"])){
$this->pageNum=$_GET["page"];
$this->pageSize=$_GET["pageSize"];
}else{
$this->pageNum=1;
$this->pageSize=3;
}
//通过传进来的参数给rowCount和url赋值
$this->rowCount=$rowCount;
$this->url=$url;
//通过计算求得页面总数
$this->pageCount=intval($rowCount/$this->pageSize)+($rowCount%$this->pageSize?1:0);
}

/**
* 画界面
*/
function ShowDiv(){

//判断是否是第一页或最后一页,确定转跳地址
$nextPage=$this->pageNum+($this->pageNum<$this->pageCount? 1:0);
$lastPage=$this->pageNum-($this->pageNum>1? 1:0);

//首页和上一页
$div="<div style='text-align: center;'>";
//设置每页显示行数,放到表单里提交时可以显示到地址栏(a标签设置不用表单)
$div.="<form action='{$this->url}' method='get'>";
$div.="共【{$this->rowCount}】条数据 <a href='{$this->url}?page=1&pageSize={$this->pageSize}'>首页</a> ";
$div.="<a href='{$this->url}?page={$lastPage}&pageSize={$this->pageSize}'>上一页</a> ";

//12345的页数,用当前页面数判断显示哪些数字
if($this->pageCount<5){
for($i=1;$i<=$this->pageCount;$i++){
if($this->pageNum==$i){
$div.="<a>{$i}</a> ";
}else{
//a标签的数字和page相对应
$div.="<a href='{$this->url}?page={$i}&pageSize={$this->pageSize}'>{$i}</a> ";
}
}
}else if($this->pageNum<=3){
for($i=1;$i<=5;$i++){
if($this->pageNum==$i){
$div.="<a>{$i}</a> ";
}else{
$div.="<a href='{$this->url}?page={$i}&pageSize={$this->pageSize}'>{$i}</a> ";
}
}
}else if($this->pageNum>3&&$this->pageNum<$this->pageCount-3){
for($i=$this->pageNum-2;$i<=$this->pageNum+2;$i++){
if($this->pageNum==$i){
$div.="<a>{$i}</a> ";
}else{
$div.="<a href='{$this->url}?page={$i}&pageSize={$this->pageSize}'>{$i}</a> ";
}
}
}else{
for($i=$this->pageCount-4;$i<=$this->pageCount;$i++){
if($this->pageNum==$i){
$div.="<a>{$i}</a> ";
}else{
$div.="<a href='{$this->url}?page={$i}&pageSize={$this->pageSize}'>{$i}</a> ";
}
}
}

//下一页、末页和显示
$div.="<a href='{$this->url}?page={$nextPage}&pageSize={$this->pageSize}'>下一页</a> ";
$div.="<a href='{$this->url}?page={$this->pageCount}&pageSize={$this->pageSize}'>末页</a> ";
$div.="当前第【{$this->pageNum}】页,共【{$this->pageCount}】页 ";

$div.="<input type='hidden' value='1' name='page' /> ";//开头用page是否存在判断的
$div.="每页<input style='width: 30px' type='text' value='{$this->pageSize}' name='pageSize'/>行 ";
$div.="<input type='submit' value='设置' name='btnSet' /></form>";
$div.="</div>";
return $div;
}
}

?>