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日

相关文章

  • iOS利用AFNetworking实现文件上传的示例代码

    下面是iOS利用AFNetworking实现文件上传的完整攻略: 1. 准备工作 首先需要将AFNetworking库添加到项目中。可以通过CocoaPods来管理库的依赖,在Podfile文件中添加以下代码: platform :iOS, ‘8.0’ pod ‘AFNetworking’, ‘~> 3.0’ 执行pod install命令后,就可以引…

    PHP 2023年5月27日
    00
  • javascript、php关键字搜索函数的使用方法

    下面是完整的“javascript、php关键字搜索函数的使用方法”的攻略。 javascript关键字搜索函数的使用方法 步骤1:获取搜索框输入的关键字 在javascript中,可以通过以下方式获取搜索框输入的内容: var inputKeyword = document.getElementById("searchBox").val…

    PHP 2023年5月25日
    00
  • ThinkPHP实现二级循环读取的方法

    下面是详细讲解“ThinkPHP实现二级循环读取的方法”的完整攻略。 1. 理解ThinkPHP的模板引擎和标签语法 ThinkPHP采用了自己独特的模板引擎,采用类似HTML的标签语法,但是使用了一些自定义的标签。在实现二级循环读取时,我们需要用到ThinkPHP的标签语法,因此需要进行一些对模板引擎和标签语法的理解。 2. 准备数据源 实现二级循环读取需…

    PHP 2023年5月23日
    00
  • 微信小程序 图片绝对定位(背景图片)

    微信小程序中可以使用绝对定位来实现图片的定位,可以借助CSS中的position属性和top、right、bottom、left属性来设定图片的位置。同时,可以将一张图片设置为背景图片去实现背景的绝对定位。 以下是实现微信小程序中图片绝对定位的攻略: 1. 使用position属性 可以在CSS中将图片的position属性设置为absolute,表示该元素…

    PHP 2023年5月23日
    00
  • PHP编程与应用

    PHP编程与应用完整攻略 简介 PHP是一种常用的脚本语言,被广泛用于Web开发。本文将介绍PHP编程的基础知识和应用,包括语法、变量、表达式、流程控制、函数、数组、文件操作、正则表达式等方面。 语法 PHP代码可以嵌入到HTML代码中,使用<?php和?>标记。例如: <!DOCTYPE html> <html> &lt…

    PHP 2023年5月30日
    00
  • PHP 数组遍历方法大全(foreach,list,each)

    PHP 数组遍历方法大全(foreach,list,each) 在 PHP 中,我们需要经常遍历数组数据结构来获取数据或进行其他操作,这时,我们需要使用一些遍历方法来帮助我们处理数组数据。下面,我们将介绍三种 PHP 数组遍历方法:foreach、list、each。 1. foreach foreach 是 PHP 最常用的遍历数组方法之一,也是最方便的方…

    PHP 2023年5月26日
    00
  • scratch怎么制作点击香蕉图片出现香蕉英文小程序?

    制作点击香蕉图片出现香蕉英文小程序是一个非常简单的scratch游戏,只需要加入一些简单的代码块即可完成,以下是完整攻略。 第一步:准备素材 在制作游戏之前,我们需要准备好游戏所需要的素材,即一个点击香蕉的图片,以及一张香蕉图片。可以选择从互联网上下载免费的素材,或者自己使用图片编辑软件制作。 第二步:创建游戏 打开Scratch网站,点击Create按钮,…

    PHP 2023年5月23日
    00
  • PHP Composer 虚拟依赖包 – 实现按需载入钉钉对应功能模块的 php sdk

    难得钉钉官方提供了完整的 api sdk,各种语言的版本的都有,而且 api 覆盖面非常完整。但是,composer 安装下来有大几十兆,这个不符合个人的品味,我想要按需加载。 于是在构思了一两次以后,今天下午开始动手实现。 首要原则,不做手工劳动,人工分包,然后提交到 packagist 仓库,那样后续会有巨大的维护工作量。 基本思路: 按固定规则在 pa…

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