PHP分页类练习总结,学习面向对象思想
1、首先确定最终实现的效果
2、设计思路
创建分页展示页面:index.php
创建分页类:mypage.class.php
先来写index.php
思路:
1、显示需要分页的数据
2、定义变量:数据总条数$total、每页显示条数$num
3、实例化分页对象,传入以上2个变量,并调用显示分页的方法
//计算总条数
$sql="select count(*) from `article`";
$result=mysqli_query($conn,$sql);
$rs=mysqli_fetch_array($result);
$total=$rs[0];
//每页显示条数
$num=5;
//显示数据
$sql="select * from `article`";
$result=mysqli_query($conn,$sql);
$rs=mysqli_fetch_array($result);
while($rs=mysqli_fetch_array($result)){
echo "<div calss='list'>";
echo "<h3>{$rs['title']}</h3>";
echo "<p class='line-limit-length'>".strip_tags($rs['content'])."</p>";
echo "<p class='p2'>{$rs['creat_time']}</p>";
echo "<p class='p2'></p>";
echo "</div>";
}
//实例化对象
$page = new page("$total",$num);
//调用分页显示方法,显示分页
echo $page->showPage();
再来写mypage.class.php
思路:
1、创建构造函数,接收对象参数
2、获取当前页面url方法,因为每次获取地址后,都会传个page参数,所以先得把url里的参数删掉
private function getUrl(){
$url=$_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':'?');
$arr=parse_url($url);
if(isset($arr['query'])){
parse_str($arr['query'],$queryArr);
unset($queryArr['page']);
$url = $arr['path'].'?'.http_build_query($queryArr);
}
return $url;
}
3、设置limit方法
分页功能的核心是这一句:select * from 表名 limit 起始条数,每页条数
通过limit方法来设置这一段sql“limit 起始条数,每页条数”
起始条数=(当前页数-1)*每页条数(这一句是核心,需要理解以下),每页条数是通过对象传进来的
以上,就能输出limit这一段
输出后,可以在index.php里调用
4、首页、上一页、下一页、尾页、总条数当天页数方法
首页:当前页不等于1,显示首页
上一页:当前页>1,显示上一页
下一页:当前页小于最大页数,显示下一页
尾页:当前页不等于尾页,显示尾页