搜索
查看: 1652|回复: 0

PHP 分页

[复制链接]

305

主题

454

帖子

978

积分

vip用户

Rank: 6Rank: 6

积分
978

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

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

8ENlNm.png

分页类代码

 <?php
/**
* @author   :gxggxl
* @BlogURL  : [zxsq-anti-bbcode-url]https://gxusb.com[zxsq-anti-bbcode-/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[zxsq-anti-bbcode-'page']) ? $_GET[zxsq-anti-bbcode-'page'] : 1;
        //获取当前页面的URL地址
        $this->url = $_SERVER[zxsq-anti-bbcode-'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 . '条记录&nbsp;&nbsp;';
        $str .= '<a href="' . $this->url . '?page=1' . $this->urlParam . '">首页</a>&nbsp;&nbsp;';
        $str .= '<a href="' . $this->url . '?page=' . ($this->page - 1) . $this->urlParam . '">上一页</a>&nbsp;&nbsp;';
        $str .= '<a href="' . $this->url . '?page=' . ($this->page + 1) . $this->urlParam . '">下一页</a>&nbsp;&nbsp;';
        $str .= '<a href="' . $this->url . '?page=' . $this->maxPage . $this->urlParam . '">尾页</a>&nbsp;&nbsp;';
        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[zxsq-anti-bbcode-'size']) ? $_GET[zxsq-anti-bbcode-'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[zxsq-anti-bbcode-"uid"] . '</td>';
    echo '<td>' . $row[zxsq-anti-bbcode-"username"] . '</td>';
    echo '<td>' . $row[zxsq-anti-bbcode-"sex"] . '</td>';
    echo '<td>' . $row[zxsq-anti-bbcode-"email"] . '</td>';
    echo '<td>' . $row[zxsq-anti-bbcode-"phone_num"] . '</td>';
    echo '<td>' . date('Y年m月d日 H:i:s', $row[zxsq-anti-bbcode-"create_time"]) . '</td>';
    echo '<tr>';
}
echo '<tr><td colspan="6" style="text-align: right">' . $page->showPage() . '</td></tr>';
echo '</table>';

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

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表