PHP查询分页的实现代码

yizhihongxing

当我们需要从数据库中查询大量数据时,需要进行分页处理来避免一次性查询过多的数据,影响网页响应速度。本攻略将详细介绍如何使用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日

相关文章

  • 兼容PHP5的PHP目录管理函数库

    介绍PHP目录管理函数库的兼容性问题 PHP目录管理函数库通常用于文件的读写、复制、删除等操作。然而,该函数库在某些服务器上可能会因为PHP版本的问题而出现兼容性问题。为此,我们需要一套兼容PHP5的PHP目录管理函数库。 步骤一:确定PHP版本 在进行PHP目录管理函数库的使用前,首先要确定我们的服务器上安装的PHP版本是否是5或以上版本。若不满足,可以考…

    PHP 2023年5月23日
    00
  • PHP从数组中删除元素的四种方法实例

    下面是详细讲解“PHP从数组中删除元素的四种方法实例”的攻略。 1. 使用unset函数删除指定的数组元素 unset函数可以用来删除指定的数组元素,可接收任意数量的参数。示例代码如下: $fruits = array(‘apple’, ‘banana’, ‘orange’, ‘watermelon’); unset($fruits[1]); // 删除索引…

    PHP 2023年5月26日
    00
  • php array_walk array_map array_filter区别案例详解

    下面是“php array_walk array_map array_filter 区别案例详解”的详细攻略。 什么是数组函数 PHP中提供了很多针对数组的函数,我们可以通过这些函数快速方便地处理和操作数组。常见的数组函数包括:array_walk、array_map和array_filter,这些函数都是用来遍历数组并进行处理的。 array_walk a…

    PHP 2023年5月26日
    00
  • 浅谈PHP设计模式的备忘录模式

    简介: 备忘录模式,属于行为型的设计模式。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。备忘录模式顾名思义,就是存档功能,类似Git工具,每次提交都相当于一次备份。主要有一下角色构成Memento —— 负责存储 Originator 的 唯一内部状态 ,它可以包含: string,n…

    PHP 2023年4月18日
    00
  • php中时间函数date及常用的时间计算

    下面是“php中时间函数date及常用的时间计算”的完整攻略。 一、date函数 1.1 什么是date函数 date函数是php内置的时间处理函数,用于获取当前时间或格式化时间。 1.2 date函数基本用法 date函数的基本语法为date(format, timestamp),其中format参数用于指定时间格式,timestamp参数为可选参数,用于…

    PHP 2023年5月26日
    00
  • PHP多进程编程实例详解

    我很乐意给您详细讲解“PHP多进程编程实例详解”的攻略。下面将会是一个完整的攻略,包括概念、实现思路和示例说明。 PHP多进程编程实例详解 什么是多进程编程 多进程编程是一种编程技术,它允许程序在同一时间内执行多个并发任务,从而提高程序的性能和效率。多进程编程主要用于那些需要在短时间内处理大量数据的应用中,例如网络服务、数据处理和Web应用程序等。 在多进程…

    PHP 2023年5月23日
    00
  • php实现源代码加密的方法

    以下是详细讲解“PHP实现源代码加密的方法”的完整攻略。 什么是源代码加密 源代码加密是指对PHP源代码进行加密处理,使得代码不可读,从而保护代码安全,避免代码泄露、篡改等问题。 实现源代码加密的方法 实现源代码加密的方法有很多种,这里我们介绍其中两种较为常用的方法。需要注意的是,这些方法只能增强源代码的保护性,但并不能完全避免源代码被窃取、篡改等问题,因此…

    PHP 2023年5月27日
    00
  • PHP判断两个给定日期是否在同一周的方法

    判断两个给定日期是否在同一周,可以使用PHP的date函数和strtotime函数完成。具体方法如下: 获取两个日期对应的星期几 使用date函数可以获取一个日期对应的星期几,例如: $date1 = ‘2021-07-01’; $week1 = date(‘w’, strtotime($date1)); $date2 = ‘2021-07-05’; $we…

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