PHP分页类练习总结,学习面向对象思想

1、首先确定最终实现的效果

PHP分页类练习总结,学习面向对象思想

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,显示上一页

下一页:当前页小于最大页数,显示下一页

尾页:当前页不等于尾页,显示尾页