PHP实现简单实用的分页类代码

这里是实现PHP分页类的攻略。

第一步:创建类文件

首先,我们需要拥有一个类文件,定义一个Pagination类。该类具有以下属性:

  • $pageNums:总页数
  • $pageSize:每页显示数据的数量
  • $currentPage:当前页面
  • $totalNums:总记录数

除此之外,类中还需要包含公共方法用于获取总页数、总记录数及当前页数据。

class Pagination {
    public $pageNums;
    public $pageSize;
    public $currentPage;
    public $totalNums;

    function __construct($pdo, $table, $pageSize) {
        $sql = "SELECT COUNT(*) AS count FROM $table";
        $result = $pdo->query($sql)->fetch(PDO::FETCH_ASSOC);
        $this->pageSize = $pageSize;
        $this->totalNums = $result['count'];
        $this->pageNums = ceil($this->totalNums / $this->pageSize);
        $this->currentPage = isset($_GET['page']) ? $_GET['page'] : 1;
    }

    public function getOffset() {
        return ($this->currentPage - 1) * $this->pageSize;
    }

    public function getPageData($pdo, $table) {
        $offset = $this->getOffset();
        $sql = "SELECT * FROM $table LIMIT $this->pageSize OFFSET $offset";
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}

第二步:使用类文件

下面是如何使用Pagination类的一个示例:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'user', 'pass');
$table = 'posts';
$pageSize = 10;
$pagination = new Pagination($pdo, $table, $pageSize);
$pageData = $pagination->getPageData($pdo, $table);
?>

<!-- 在HTML中显示分页 -->
<div class="pagination">
    <?php for ($i = 1; $i <= $pagination->pageNums; $i++):?>
        <a href="?page=<?php echo $i;?>" <?php if($i==$pagination->currentPage) echo 'class="active"';?>><?php echo $i;?></a>
    <?php endfor;?>
</div>

<!-- 显示当前页面数据 -->
<div class="data">
    <?php foreach ($pageData as $data):?>
        <div class="post">
            <h2><?php echo $data['title'];?></h2>
            <p><?php echo $data['content'];?></p>
        </div>
    <?php endforeach;?>
</div>

这里使用了PDO连接到数据库,并定义了要查询的数据表 $table 及每页显示的数据数量 $pageSize 。然后,在构造函数中计算出总页数及设置当前页面。接着,getPageData() 方法用于获取当前页面的数据。在HTML中,可以通过 $pagination->pageNums 获取总页数,在循环中输出链接,将当前页面的链接加上 class="active" 属性。在 $pageData 中存储了当前页面的数据,在循环中显示该数据。

下面是另一个示例,该示例中 $table 取得了输入参数,允许在不同的表格中应用该分页类。

<?php
$table = isset($_GET['table']) ? $_GET['table'] : 'posts';
$pageSize = 10;
$pagination = new Pagination($pdo, $table, $pageSize);
$pageData = $pagination->getPageData($pdo, $table);
?>

<!-- 在HTML中显示分页 -->
<div class="pagination">
    <?php for ($i = 1; $i <= $pagination->pageNums; $i++):?>
        <a href="?page=<?php echo $i;?>&table=<?php echo $table;?>" <?php if($i==$pagination->currentPage) echo 'class="active"';?>><?php echo $i;?></a>
    <?php endfor;?>
</div>

<!-- 显示当前页面数据 -->
<div class="data">
    <?php foreach ($pageData as $data):?>
        <div class="post">
            <h2><?php echo $data['title'];?></h2>
            <p><?php echo $data['content'];?></p>
        </div>
    <?php endforeach;?>
</div>

这里通过检查 $_GET 来获取想要查询的表格名 $table 。注意,我们在每个链接中传递了 $table 变量,以便在从另一个页面链接时继续使用 $table。其他部分与前面的示例相同。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现简单实用的分页类代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 探讨php中遍历二维数组的几种方法详解

    完整攻略:探讨PHP中遍历二维数组的几种方法 一、什么是二维数组? 在PHP中,数组可以是多维的,二维数组就是指在一个数组中嵌套着一个或多个数组。例如下面这个二维数组: $arr = array( array(‘apple’, ‘orange’, ‘banana’), array(‘cat’, ‘dog’, ‘fish’), array(‘red’, ‘gr…

    PHP 2023年5月26日
    00
  • php.ini 启用disable_functions提高安全

    PHP是一种动态语言,这也意味着它非常灵活,但这也会导致某些违规代码或者故意恶意的攻击行为得以执行。通过禁用一些敏感函数,如exec(),system()和shell_exec()等,可以提高服务器安全性,但这同时也可能会影响到你的应用程序。 下面是在php.ini中启用disable_functions来提高安全的完整攻略: 1. 找到php.ini文件 …

    PHP 2023年5月27日
    00
  • 基于php实现随机合并数组并排序(原排序)

    这里就为大家介绍一下基于PHP实现随机合并数组并排序的完整攻略。 什么是随机合并数组并排序? 随机合并数组并排序是一种常见的数据处理方式,它将多个数组中的元素随机合并,并按照原数组中的顺序进行排序。比如说,有两个数组:$arr1 = array(‘a’, ‘b’, ‘c’, ‘d’); $arr2 = array(‘e’, ‘f’, ‘g’, ‘h’);随机…

    PHP 2023年5月26日
    00
  • 简单解析PHP程序的运行流程

    下面我将详细讲解“简单解析PHP程序的运行流程”的完整攻略。 PHP程序的运行流程 PHP程序的运行流程可以简单概括为以下四个步骤: Web服务器接收客户端的HTTP请求。 PHP解释器读取请求中的PHP脚本,并将其翻译为可执行的指令。 PHP解释器执行脚本,并将结果返回给Web服务器。 Web服务器将PHP程序的结果发送给客户端,完成响应过程。 下面我们来…

    PHP 2023年5月23日
    00
  • PHP 压缩文件夹的类代码

    让我们来讲解如何使用 PHP 压缩文件夹的类代码。下面我们将以示例说明的形式,详细讲解这个过程。 步骤一:下载压缩类文件 首先,我们需要下载一个叫做“ZipArchive”的 PHP 类文件。该类文件可以帮助我们实现将文件夹打包为 zip 文件。您可以在以下链接中下载该文件: https://github.com/maennchen/ZipArchive 请…

    PHP 2023年5月26日
    00
  • PHP入门教程之数学运算技巧总结

    PHP入门教程之数学运算技巧总结 1. 基础算术运算 PHP可以进行基础的算术运算,包括加法、减法、乘法、除法和取余等常见操作。 示例1: $a = 10; $b = 5; $c = $a + $b; // 加法 $d = $a – $b; // 减法 $e = $a * $b; // 乘法 $f = $a / $b; // 除法 $g = $a % $b;…

    PHP 2023年5月26日
    00
  • PHP中单引号与双引号的区别分析

    请看下面的攻略,希望能够解决你的问题。 PHP中单引号与双引号的区别分析 一、区别概述 在 PHP 中,单引号和双引号可以用来创建字符串。虽然它们看起来很相似,但是它们之间有一些关键的区别。 主要区别如下: 双引号能够解析变量,而单引号不会。 单引号比双引号更快,因为单引号不需要处理内部的特殊字符。 二、双引号能够解析变量 双引号字符串允许在字符串内部插入变…

    PHP 2023年5月26日
    00
  • 解决PHP字符串长度不一致的问题

    针对“解决PHP字符串长度不一致的问题”的完整攻略,我给出以下的详细讲解: 1. 获取字符串长度 我们可以使用PHP内置函数strlen获取一个字符串的长度。示例代码如下: $str = ‘hello world’; $length = strlen($str); echo $length; // 输出11 2. 计算中英文混合字符串长度 如果字符串中包含中…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部