搜索
查看: 1260|回复: 0

PHP 分页

[复制链接]

282

主题

399

帖子

878

积分

vip用户

Rank: 6Rank: 6

积分
878

注册会员活跃会员热心会员

QQ
发表于 2020-11-16 19:19:58 | 显示全部楼层 |阅读模式
首先来看看分页效果

8ENlNm.png

分页类代码

<?php
/**
 * @author   :gxggxl
 * @BlogURL  : [url]https://gxusb.com[/url]
 * @DateTime : 2020/10/10 16:33
 */
//page.class.php
class Page
{
    //成员属性
    private $page;//当前页
    private $maxRows;//总条数
    private $pageSize;//每页显示多少条
    private $maxPage = 0;//总页数
    private $url;//当前页面的URL地址
    private $urlParam = '';//当前页面的参数

    //成员方法
    public function __construct($maxRows, $pageSize = 5) {
        //进行初始化赋值操作
        $this->maxRows = $maxRows;
        $this->pageSize = $pageSize;
        //定义当前页
        $this->page = isset($_GET['page']) ? $_GET['page'] : 1;
        //获取当前页面的URL地址
        $this->url = $_SERVER['PHP_SELF'];
        //获取总页数
        $this->getMaxPage();
        //验证当前页的值
        $this->checkPage();
        //调用URL参数
        $this->urlParam();
    }

    // getMaxPage 计算总页数
    private function getMaxPage() {
        //判断除数
        if ($this->pageSize < 1) {
            $this->pageSize = 1;
        }
        $this->maxPage = @ceil($this->maxRows/$this->pageSize);
    }

    //验证当前页
    private function checkPage() {
        if ($this->page > $this->maxPage) {
            $this->page = $this->maxPage;
        }
        if ($this->page < 1) {
            $this->page = 1;
        }
        if ($this->pageSize > $this->maxRows) {
            $this->pageSize = $this->maxRows;
        }
        if ($this->pageSize < 1) {
            $this->pageSize = 1;
        }
    }

    //过滤当前URL地址中的参数信息
    private function urlParam() {
        foreach ($_GET as $key => $value) {
            //判断参数值和参数名是否有效
            if ($value != '' && $key != 'page') {
                $this->urlParam .= '&' . $key . '=' . $value;
            }
        }
        // echo $this->urlParam;
    }

    /**
     * 输出页码
     *
     * @return string
     */
    public function showPage() {
        $str = '';
        $str .= '当前第' . $this->page . '页/共' . $this->maxPage . '页,共' . $this->maxRows . '条记录  ';
        $str .= '<a href="' . $this->url . '?page=1' . $this->urlParam . '">首页</a>  ';
        $str .= '<a href="' . $this->url . '?page=' . ($this->page - 1) . $this->urlParam . '">上一页</a>  ';
        $str .= '<a href="' . $this->url . '?page=' . ($this->page + 1) . $this->urlParam . '">下一页</a>  ';
        $str .= '<a href="' . $this->url . '?page=' . $this->maxPage . $this->urlParam . '">尾页</a>  ';
        return $str;
    }

    /**
     * 返回分页的limit条件
     *
     * @return string
     */
    public function limit() {
        $num = ($this->page - 1)*$this->pageSize;
        return $num . ',' . $this->pageSize;
    }
}


类的使用方法
//引入分页类
include "page.class.php";
header("Content-Type:text/html;charset=utf-8");
//数据库连接资源
$link = mysqli_connect("127.0.0.1", "test", "123456", "test");
//得到结果集
$result = mysqli_query($link, "select * from crm_users");
//获取记录总条数
$total = mysqli_num_rows($result);
//设计每页显示条数
$pageSize = isset($_GET['size']) ? $_GET['size'] : 5;
//实例化分页类,$total(总条数),$pageSize(每页显示条数)
$page = new Page($total, $pageSize);
//拿到分页查询条件
$limit = $page->limit();
//sql语句
$sql = "select * from crm_users limit {$limit}";
//查询数据
$result = mysqli_query($link, $sql);
//把结果在表格中显示
echo '<style>a{text-decoration: none;}</style>';
echo '<table border="1" style="width: 760px;margin: 50px auto;">';
echo '<caption><h1>Users</h1></caption>';
echo '<tr><th>uid</th><th>username</th><th>sex</th><th>email</th><th>phone_num</th><th>create_time</th></tr>';
//从结果集中取得一行作为关联数组
while ($row = mysqli_fetch_assoc($result)) {
    echo '<tr>';
    echo '<td>' . $row["uid"] . '</td>';
    echo '<td>' . $row["username"] . '</td>';
    echo '<td>' . $row["sex"] . '</td>';
    echo '<td>' . $row["email"] . '</td>';
    echo '<td>' . $row["phone_num"] . '</td>';
    echo '<td>' . date('Y年m月d日 H:i:s', $row["create_time"]) . '</td>';
    echo '<tr>';
}
echo '<tr><td colspan="6" style="text-align: right">' . $page->showPage() . '</td></tr>';
echo '</table>';

有没有参加CTF比赛的,一起组队啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

温馨提示
1:发帖请遵守《中华人民共和国网络安全法》,发帖内容不得维护国家的、集体的、个人的利益。
2:请勿发布恶意攻击他人的技术文章、工具、和使用教程,发现后删帖处理。
3:本站的目的在于让更多的人了解网络安全,避免受到他人的恶意攻击。
4:本站中的部分文章,可能会出现一些“技术类手段”,但这仅仅为学习演示所用,而非恶意传播技术。
5:本站中的部分文章,可能转载自互联网。如有侵权行为,联系我们删除即可。
6:学习仅是充实头脑,切勿恶意攻击个人、企业等。所造成的法律后果一切由自己承担,本站及其站长概不负责。
朕知道了
快速回复 返回顶部 返回列表