PHP查询分页的实现代码

当我们需要从数据库中查询大量数据时,需要进行分页处理来避免一次性查询过多的数据,影响网页响应速度。本攻略将详细介绍如何使用PHP实现分页功能。

实现思路

分页功能主要涉及两个参数:当前页码和每页显示的数据条数。通过这两个参数,结合数据库中数据的总数,计算出总页数。然后根据当前页码查询数据库中对应页码的数据,并进行渲染。

准备工作

  1. 数据库中存储的数据表,例如名称为users
  2. 数据表中存储的数据总数。

代码实现

第一步:计算数据总页数

<?php
// 计算总页数
function getTotalPage($total, $pageSize) {
    return ceil($total / $pageSize);
}

该函数接收两个参数:数据总数和每页显示的数据条数。利用PHP内置的ceil函数进行上取整运算,计算出总页数。

第二步:查询对应页码的数据并进行渲染

<?php 
$page = isset($_GET['page']) ? intval($_GET['page']) : 1; // 当前页码
$pageSize = 10; // 每页显示的数据条数

$offset = ($page - 1) * $pageSize; // 偏移量

// 查询数据
$sql = "SELECT * FROM users LIMIT {$offset}, {$pageSize}";
$res = mysql_query($sql); // 执行查询语句

// 渲染数据
while ($row = mysql_fetch_assoc($res)) {
    echo "{$row['name']} {$row['age']}<br>";
}

首先获取当前页码,如果没有传递则默认为第一页。然后计算偏移量(即需要查询的数据的起始位置),根据偏移量和每页显示的数据条数,构造查询SQL语句,对数据库进行查询。查询结果为一个关联数组,利用循环遍历结果并进行渲染。

第三步:渲染页码导航栏

<?php 
$page = isset($_GET['page']) ? intval($_GET['page']) : 1; // 当前页码
$pageSize = 10; // 每页显示的数据条数
$total = 100; // 数据总数

$offset = ($page - 1) * $pageSize; // 偏移量

// 查询数据
$sql = "SELECT * FROM users LIMIT {$offset}, {$pageSize}";
$res = mysql_query($sql); // 执行查询语句

// 渲染数据
while ($row = mysql_fetch_assoc($res)) {
    echo "{$row['name']} {$row['age']}<br>";
}

// 渲染页码导航栏
$totalPage = getTotalPage($total, $pageSize); // 总页数
$nextPage = $page + 1; // 下一页页码
$prevPage = $page - 1; // 上一页页码

echo "<p>";
if ($page > 1) {
    echo "<a href='?page={$prevPage}'>上一页</a> ";
}

for ($i=1; $i<=$totalPage; $i++) {
    if ($i == $page) {
        echo "<strong>{$i}</strong> ";
    } else {
        echo "<a href='?page={$i}'>{$i}</a> ";
    }
}

if ($page < $totalPage) {
    echo "<a href='?page={$nextPage}'>下一页</a> ";
}
echo "</p>";

首先获取总页数和上一页、下一页页码。利用for循环遍历每一页码,如果是当前页码则加上strong标签。最后通过条件判断,渲染上一页、下一页的链接。

示例说明

示例一:从数据库查询用户信息进行分页展示

假设我们有一个存储用户信息的users数据表,包含用户ID,用户名和年龄字段。现在需要从该数据表中查询所有用户的信息,并且每页展示10条数据进行分页。

<?php
// 链接数据库
mysql_connect("localhost", "root", "password");
mysql_select_db("test");

$page = isset($_GET['page']) ? intval($_GET['page']) : 1; // 当前页码
$pageSize = 10; // 每页显示的数据条数

$total = mysql_num_rows(mysql_query("SELECT * FROM users")); // 数据总数
$offset = ($page - 1) * $pageSize; // 偏移量

// 查询数据
$sql = "SELECT * FROM users LIMIT {$offset}, {$pageSize}";
$res = mysql_query($sql); // 执行查询语句

// 渲染数据
while ($row = mysql_fetch_assoc($res)) {
    echo "{$row['id']} {$row['name']} {$row['age']}<br>";
}

// 渲染页码导航栏
$totalPage = getTotalPage($total, $pageSize); // 总页数
$nextPage = $page + 1; // 下一页页码
$prevPage = $page - 1; // 上一页页码

echo "<p>";
if ($page > 1) {
    echo "<a href='?page={$prevPage}'>上一页</a> ";
}

for ($i=1; $i<=$totalPage; $i++) {
    if ($i == $page) {
        echo "<strong>{$i}</strong> ";
    } else {
        echo "<a href='?page={$i}'>{$i}</a> ";
    }
}

if ($page < $totalPage) {
    echo "<a href='?page={$nextPage}'>下一页</a> ";
}
echo "</p>";

示例二:从API接口中获取数据进行分页展示

现在有一个API接口https://example.com/api/users,可以返回所有用户的信息,每次最多返回100条数据。需要从该接口中获取所有用户的信息,并且每页展示10条数据进行分页。

<?php
$page = isset($_GET['page']) ? intval($_GET['page']) : 1; // 当前页码
$pageSize = 10; // 每页显示的数据条数

$url = "https://example.com/api/users?page={$page}&pageSize={$pageSize}"; // API接口地址
$data = file_get_contents($url); // 获取API接口返回的数据
$data = json_decode($data, true); // 将数据转换成关联数组

$total = $data['total']; // 数据总数

// 渲染数据
foreach ($data['data'] as $item) {
    echo "{$item['id']} {$item['name']} {$item['age']}<br>";
}

// 渲染页码导航栏
$totalPage = getTotalPage($total, $pageSize); // 总页数
$nextPage = $page + 1; // 下一页页码
$prevPage = $page - 1; // 上一页页码

echo "<p>";
if ($page > 1) {
    echo "<a href='?page={$prevPage}'>上一页</a> ";
}

for ($i=1; $i<=$totalPage; $i++) {
    if ($i == $page) {
        echo "<strong>{$i}</strong> ";
    } else {
        echo "<a href='?page={$i}'>{$i}</a> ";
    }
}

if ($page < $totalPage) {
    echo "<a href='?page={$nextPage}'>下一页</a> ";
}
echo "</p>";

在该示例中,首先构造API接口的请求URL,通过file_get_contents函数获取API接口返回的数据,并将数据转换成关联数组。接下来渲染数据和页码导航栏的方式与示例一一致。

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

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

相关文章

  • 浅谈php的优缺点

    浅谈PHP的优缺点 PHP既是一种脚本语言,也是一种编程语言,被广泛地应用在Web开发领域。本文将从以下几个方面探讨PHP的优缺点。 优点 1. 易学易用 PHP的语法一般来说相对简单,使用者可以快速上手,并且得益于PHP的强大社区支持,PHP的文档、工具和第三方库已经相当丰富了。 2. 跨平台兼容 PHP语言可以在多种操作系统和Web服务器上运行,包括Li…

    PHP 2023年5月23日
    00
  • PHP编程基本语法快速入门手册

    要讲解PHP编程基本语法快速入门手册的完整攻略,首先需要了解以下几个方面: PHP基础语法 PHP数据类型 PHP运算符 PHP控制结构 PHP函数 PHP数组 PHP面向对象编程 下面针对每个方面进行介绍: PHP基础语法 在PHP中,每条语句必须以分号(;)结尾,注释可以使用 // 或者 # 开头,分别表示单行注释和多行注释。 示例: // 单行注释 #…

    PHP 2023年5月23日
    00
  • php中PHPUnit框架实例用法

    针对 PHP 中 PHPUnit 框架实例的用法,我来分享一下详细攻略。 PHPUnit 框架简介 PHPUnit 是一个 PHP的单元测试框架。它是在Junit, SUnit和CppUnit等著名单元测试框架的启发下写成的。PHPUnit 不仅支持建立并运行单元测试,而且支持建立并运行功能测试。 下面,我将介绍 PHPUnit框架的安装及基本使用示例。 安…

    PHP 2023年5月26日
    00
  • PHP程序员必须知道的两种日志实例分析

    当 PHP 应用程序出现故障或效率低下时,日志记录是一种诊断问题的常见方法。在 PHP 应用程序中,可以使用两种不同的日志记录方式来分析问题 – 请求级别和应用程序级别的日志记录。以下是 PHP 程序员必须知道的这两种日志实例分析的完整攻略: 请求级别的日志记录 请求级别的日志记录在每个请求期间记录请求和响应的详细信息。这些日志由 web 服务器的访问日志和…

    PHP 2023年5月23日
    00
  • ie与session丢失(新窗口cookie丢失)实测及解决方案

    IE与Session丢失(新窗口cookie丢失)实测及解决方案 背景 在使用IE浏览器时,会经常遇到在新窗口打开网页时,原本存在的session信息和cookie信息丢失的情况,这不仅会给用户带来不便,也会影响网站的正常运转。 实测过程 为了验证这个问题,我们采用了以下步骤进行实测: 在IE浏览器中打开网站,并登录成功。此时,我们可以看到浏览器中已经设置了…

    PHP 2023年5月27日
    00
  • PHP读取XML格式文件的方法总结

    PHP读取XML格式文件的方法总结 一、XML文件简介 XML(可扩展标记语言)是一种标记语言,它可以被用来存储和传输数据。与HTML相比,XML的标签没有事先定义好的,需要自己定义,用户需要自行定义标记以及标记的属性来表达数据。XML的主要作用是把数据描述为一种独立于软件和硬件的格式,该数据可以用于各种应用程序之间的交换或共享。 二、PHP读取XML文件的…

    PHP 2023年5月26日
    00
  • 区块链技术:什么是加密货币挖矿?

    区块链技术:什么是加密货币挖矿? 什么是加密货币挖矿? 加密货币挖矿是指用计算机处理复杂的加密算法,获取数字货币的过程。挖矿的计算过程需要消耗计算能力、电力和时间。通过解决密码学难题获取数字货币的过程可以称之为挖矿。比特币、以太坊、莱特币等数字货币都需要进行挖矿。 挖矿的原理 比特币使用的是工作量证明(PoW)共识机制,即通过计算产生的结果来获得比特币奖励。…

    PHP 2023年5月27日
    00
  • PHP时间函数使用详解

    PHP时间函数使用详解 PHP中有很多时间相关的函数可供使用。这些函数可以帮你获取、操作和格式化日期和时间。在这篇文章中,我们将详细讲解PHP时间函数的使用。 1. 获取当前时间 你可以使用date()函数获取当前的日期和时间。 echo date(‘Y-m-d H:i:s’); 该代码将输出当前的日期和时间,格式示例:2021-05-10 14:30:00…

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