默默小谈PHP&MYSQL分页原理及实现

介绍

PHP和MYSQL是当前非常流行的两个技术,而分页在Web开发中也是非常常用的功能。本文将详细介绍PHP和MYSQL分页原理及其实现,让开发者可以更好地理解和实现分页功能。

分页原理

分页主要涉及两个概念:当前页和每页显示的记录数。在进行分页时,需要计算出总记录数和总页数。

总记录数的计算非常简单,只需要查询数据表中总的记录数即可。

总页数的计算需要用到分页公式:总页数 = 总记录数 / 每页显示的记录数,如果总记录数不能整除每页显示的记录数,就要向上取整。

在计算完成总页数后,我们需要根据用户传递的当前页信息来动态计算起始索引和结束索引。这可以通过两个公式来实现:

起始索引 = (当前页 - 1) * 每页显示的记录数

结束索引 = 起始索引 + 每页显示的记录数 - 1

实现方法

在PHP中,分页功能的实现可以通过以下几个步骤来完成:

1.连接MYSQL数据库

首先需要使用PHP连接MYSQL数据库,并且设置好字符编码。

<?php
$db = mysqli_connect('localhost', 'user', 'password', 'db_name');
mysqli_set_charset($db, 'utf8');
?>

2.查询总记录数与总页数

通过查询数据表的总记录数,然后使用分页公式计算总页数。

<?php
$sql = 'SELECT COUNT(*) as total_count FROM table_name';
$result = mysqli_query($db, $sql);
$row = mysqli_fetch_assoc($result);
$total_count = $row['total_count'];
$page_size = 10; //每页显示的记录数
$total_page = ceil($total_count / $page_size); //总页数
?>

3.处理当前页码

通过用户传递的当前页信息,计算出起始索引和结束索引。如果用户没有传递当前页信息,则默认为第一页。

<?php
if (isset($_GET['page'])) {
    $current_page = $_GET['page'];
} else {
    $current_page = 1;
}
$start_index = ($current_page - 1) * $page_size;
$end_index = $start_index + $page_size - 1;
?>

4.查询分页数据

根据起始索引和结束索引,查询需要显示的分页数据。

<?php
$sql = "SELECT * FROM table_name LIMIT {$start_index}, {$page_size}";
$result = mysqli_query($db, $sql);
while ($row = mysqli_fetch_assoc($result)) {
    //处理每行数据的逻辑
}
?>

5.渲染分页导航

通过计算出的总页数和当前页码,生成分页导航,支持用户跳转到指定页码。

<?php
echo '<div class="pagination">';
for ($i = 1; $i <= $total_page; $i++) {
    if ($i == $current_page) { //当前页码不需要超链接
        echo "<a href='#' class='active'>{$i}</a>";
    } else {
        echo "<a href='?page={$i}'>{$i}</a>";
    }
}
echo '</div>';
?>

示例

以下两个示例将演示如何通过PHP和MYSQL实现分页功能。

  1. 查询学生表的数据

学生表包含姓名、年龄、性别等字段信息,我们需要查询数据表中的全部记录,并进行分页显示。该示例需要使用以下mysql语句来创建学生表:

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `age` int(11) NOT NULL,
  `gender` varchar(10) NOT NULL,
  PRIMARY KEY (`id`)
);

以下是PHP代码实现:



  <?php
    $db = mysqli_connect('localhost', 'username', 'password', 'dbname');
    mysqli_set_charset($db, 'utf8');

    $sql = "SELECT COUNT(*) as total_count FROM student";
    $result = mysqli_query($db, $sql);
    $row = mysqli_fetch_assoc($result);
    $total_count = $row['total_count'];
    $page_size = 5; //每页显示的记录数
    $total_page = ceil($total_count / $page_size); //总页数

    if (isset($_GET['page'])) {
        $current_page = $_GET['page'];
    } else {
        $current_page = 1;
    }
    $start_index = ($current_page - 1) * $page_size;
    $end_index = $start_index + $page_size - 1;

    $sql = "SELECT * FROM student LIMIT {$start_index}, {$page_size}";
    $result = mysqli_query($db, $sql);

    echo '<table>';
    echo '<tr><th>ID</th><th>Name</th><th>Age</th><th>Gender</th></tr>';
    while ($row = mysqli_fetch_assoc($result)) {
        echo '<tr><td>' . $row['id'] . '</td><td>' . $row['name'] . '</td><td>' . $row['age'] . '</td><td>' . $row['gender'] . '</td></tr>';
    }
    echo '</table>';

    echo '<div class="pagination">';
    for ($i = 1; $i <= $total_page; $i++) {
        if ($i == $current_page) { //当前页码不需要超链接
            echo "<span class='active'>{$i}</span>";
        } else {
            echo "<a href='?page={$i}'>{$i}</a>";
        }
    }
    echo '</div>';
  ?>
  1. 查询商品表的数据

商品表包含商品名称、价格、描述等字段信息,我们需要根据用户的关键字进行查询,并且分页显示。该示例需要使用以下mysql语句来创建商品表:

CREATE TABLE `product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `price` decimal(10,2) NOT NULL,
  `description` text NOT NULL,
  PRIMARY KEY (`id`)
);

以下是PHP代码实现:

  <?php
  if (isset($_GET['keyword'])) {
    $keyword = mysqli_real_escape_string($_GET['keyword']);

    $db = mysqli_connect('localhost', 'username', 'password', 'dbname');
    mysqli_set_charset($db, 'utf8');

    $sql = "SELECT COUNT(*) as total_count FROM product WHERE name LIKE '%{$keyword}%'";
    $result = mysqli_query($db, $sql);
    $row = mysqli_fetch_assoc($result);
    $total_count = $row['total_count'];
    $page_size = 10; //每页显示的记录数
    $total_page = ceil($total_count / $page_size); //总页数

    if (isset($_GET['page'])) {
        $current_page = $_GET['page'];
    } else {
        $current_page = 1;
    }
    $start_index = ($current_page - 1) * $page_size;
    $end_index = $start_index + $page_size - 1;

    $sql = "SELECT * FROM product WHERE name LIKE '%{$keyword}%' LIMIT {$start_index}, {$page_size}";
    $result = mysqli_query($db, $sql);

    echo '<table>';
    echo '<tr><th>ID</th><th>Name</th><th>Price</th><th>Description</th></tr>';
    while ($row = mysqli_fetch_assoc($result)) {
        echo '<tr><td>' . $row['id'] . '</td><td>' . $row['name'] . '</td><td>' . $row['price'] . '</td><td>' . $row['description'] . '</td></tr>';
    }
    echo '</table>';

    echo '<div class="pagination">';
    for ($i = 1; $i <= $total_page; $i++) {
        if ($i == $current_page) { //当前页码不需要超链接
            echo "<span class='active'>{$i}</span>";
        } else {
            echo "<a href='?keyword={$keyword}&page={$i}'>{$i}</a>";
        }
    }
    echo '</div>';
  }
  ?>

结论

分页功能在Web开发中非常常见,使用PHP和MYSQL实现分页功能也非常简单。本文通过详细讲解分页原理和实现方法,并通过两个示例代码来演示具体的实现步骤,相信可以帮助开发者更好地理解和实现分页功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:默默小谈PHP&MYSQL分页原理及实现 - Python技术站

(0)
上一篇 2天前
下一篇 2天前

相关文章

  • php多数据库支持的应用程序设计

    下面我将详细讲解如何设计支持多数据库的 PHP 应用程序的完整攻略。 什么是 PHP 多数据库支持? 通常情况下,一个 PHP 程序只支持连接一个数据库,然而有些企业或项目需要连接多个数据库,这就需要 PHP 应用程序支持多种数据库类型(如 MySQL、Oracle、SQL Server 等),这就是 PHP 多数据库支持。 如何实现 PHP 多数据库支持?…

    PHP 5天前
    00
  • php生成短网址示例

    生成短网址是一个非常常见的需求,有多种方法可以实现,这里介绍一种使用 PHP 生成短网址的方法。 1. 思路分析 生成短网址的核心思路如下: 获取原始网址。 将原始网址转换成一个唯一的字符串。可以使用一些哈希函数或者随机字符串生成函数。 将短网址和原始网址建立一一对应的映射关系。 将原始网址的短网址返回给用户。 实现过程中需要考虑到以下问题: 如何保证短网址…

    PHP 6天前
    00
  • 微信小程序搜索功能(附:小程序前端+PHP后端)

    下面我详细讲解“微信小程序搜索功能(附:小程序前端+PHP后端)”的完整攻略。 一、前言 微信小程序搜索功能是小程序中很重要的一部分,很多小程序都需要实现搜索功能。本文将完整地展示如何在微信小程序中实现搜索功能,包括小程序前端和PHP后端。 二、小程序前端实现 小程序前端使用wxml、wxss、js和微信开发者工具进行开发。首先,我们要在小程序的.wxml文…

    PHP 6天前
    00
  • PHP生成二维码与识别二维码的方法详解【附源码下载】

    PHP生成二维码与识别二维码的方法详解【附源码下载】 二维码是现代社会中非常重要的一种信息传输和识别方式。在编写网络应用程序时,可能需要在网站上嵌入二维码,或者解析用户提供的二维码数据。本文将介绍使用PHP生成和解析二维码的方法,并提供相应的源码供读者下载。 生成二维码的方法 生成二维码需要用到PHP Library,我们这里使用PHP QR Code Li…

    PHP 3天前
    00
  • PHP 中的 RASP 实现流程分析

    PHP 中的 RASP 实现流程分析 概述 RASP (Runtime Application Self Protection) 是一种运行时应用程序自我保护技术,常用于防范 Web 应用程序常见攻击,如 XSS、SQL 注入、File Inclusion 等。在 PHP 中实现 RASP 可以防止应用程序被各种攻击所利用、数据被盗取等。该文章将介绍 PHP…

    PHP 2天前
    00
  • PHP新手上路(十四)

    PHP新手上路(十四)完整攻略 1. 常量 1.1 定义常量 常量的定义使用 define() 函数表示。定义一个常量分为以下两个步骤: 使用 define() 函数定义常量的名称 为这个名称定义一个值 例如,定义一个 PI 常量,值为 3.1415926535: define(‘PI’, 3.1415926535); 1.2 访问常量 定义好常量之后,可以…

    PHP 6天前
    00
  • php实现比较两个文件夹异同的方法

    针对您的问题,下面是我对于PHP实现比较两个文件夹异同的方法的完整攻略。 1. 获取文件夹中的文件 首先,我们需要获取两个文件夹中的所有文件,可以使用PHP的scandir函数,该函数可以获取指定目录下的所有文件名,包括子目录中的文件名。 示例: $path = ‘./dir1/’; $fileNames = scandir($path); foreach …

    PHP 3天前
    00
  • PHP自动识别字符集并完成转码详解

    下面是关于”PHP自动识别字符集并完成转码”的完整攻略: 1.什么是字符集转码? 在不同的编码方案中,同样的字母或符号可能会以不同的二进制形式进行编码存储,这种编码方式称为字符编码。字符集就是一系列字符的集合,并按照一定的规则进行编码集合形成的编码方式。字符集转码就是将不同字符集编码的文本转换成特定编码的文本,以便于我们进行正确的输出和使用。 2.PHP自动…

    PHP 3天前
    00
  • PHP 将逗号、空格、回车分隔的字符串转换为数组的函数

    PHP中提供了多种将逗号、空格、回车分隔的字符串转换为数组的函数,下面分别介绍两个常用的方法。 方法一:explode()函数 explode()函数可以通过分割符将字符串分割成数组。例如,将逗号分隔的字符串转换为数组,代码如下: $str = ‘apple, banana, orange’; //定义要转换的字符串 $arr1 = explode(‘, ‘…

    PHP 3天前
    00
  • php常用字符串输出方法分析(echo,print,printf及sprintf) 原创

    PHP常用字符串输出方法分析 在PHP中,输出字符串是我们经常要面对的问题,我们需要掌握一些常用的输出方法来输出我们想要的内容。本文主要介绍PHP常用的四种字符串输出方法echo、print、printf和sprintf。 echo echo是PHP中最常用的字符串输出函数,可以输出一个或多个字符串,语法格式如下: echo string1, string2…

    PHP 3天前
    00