默默小谈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)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • PHP使用preg_split()分割特殊字符(元字符等)的方法分析

    下面是关于“PHP使用preg_split()分割特殊字符(元字符等)的方法分析”的完整攻略: 什么是preg_split()函数 preg_split()是PHP中的一个正则表达式函数,它用于将一个字符串根据正则表达式模式进行分割。 preg_split()的语法 array preg_split ( string $pattern , string $s…

    PHP 2023年5月26日
    00
  • php array_filter除去数组中的空字符元素

    当我们遍历数组时,有时候需要剔除数组中的空字符元素以得到有效数据。array_filter() 函数可以帮助我们完成这项任务。 函数原型 在介绍使用方法前,先看一下该函数的原型: array array_filter ( array $input [, callable $callback [, int $flag = 0 ]] ) 参数说明 $input:…

    PHP 2023年5月26日
    00
  • 原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】

    让我们来详细讲解一下“原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】”的完整攻略。 什么是CSV文件? CSV文件是指逗号分隔值文件(Comma-Separated Values),即把数据以逗号分隔的形式保存在文本文件中。CSV文件可以通过电子表格软件,如Microsoft Excel、Google Sheets等打开和编辑。 原生PH…

    PHP 2023年5月26日
    00
  • awk简介与学习笔记收集第3/3页

    首先,awk是一种经典的的文本处理工具,使用广泛。为了更好地掌握awk,我们需要了解其基本原理以及常用的语法。 一、基本原理 awk其实是一种编程语言,它的基本原理就是从文件或输入流一行一行地读取数据,然后按照指定的规则进行处理。这里的规则是指一个程序或脚本,也就是awk语言的代码。 二、常用语法 基本语法 awk程序的基本格式如下: awk ‘条件1{动作…

    PHP 2023年5月27日
    00
  • security.js实现的RSA加密功能示例

    下面是“security.js实现的RSA加密功能示例”的完整攻略。 1. 安装security.js 首先需要安装security.js,它是一个纯JavaScript库,可以在浏览器和Node.js环境下使用。 在浏览器环境下,可以通过script标签引入: <script src="https://cdn.bootcdn.net/aja…

    PHP 2023年5月27日
    00
  • PHP 变量定义和变量替换的方法

    PHP是一种脚本语言,动态变量是它的一个关键特性。在使用PHP过程中,你必须熟练掌握变量定义和变量替换的方法,本文将为你详细讲解。 变量定义 在PHP中,变量是通过”$”符号来定义的。定义变量的语法如下: $variable_name = value; 在其中,变量名是标识符,它必须以美元符号开头。变量名只能是字母、数字以及下划线的组合,且不能以数字开头。赋…

    PHP 2023年5月26日
    00
  • PHP安全编程之加密功能

    PHP安全编程之加密功能 什么是加密? 加密,简单来说就是将明文通过某种算法转化成密文的过程。密文不同于明文,经过特定算法加密后的信息在未经过对应的解密算法进行解密是无法还原成明文的。 加密的作用 加密的主要作用有以下几个: 保护数据隐私:通过加密,可以防止未授权的人员获取敏感数据的信息。 防止抵赖和篡改:通过数字签名等技术可以防止信息被篡改,保证数据的完整…

    PHP 2023年5月23日
    00
  • PHP7.1实现的AES与RSA加密操作示例

    PHP7.1实现的AES与RSA加密操作示例 本文主要讲解如何在PHP7.1环境下使用AES与RSA加密算法进行数据加密。在实现过程中,本文会提供两个示例,一个是使用AES加密算法加密数据的示例,另一个是使用RSA加密算法加密数据的示例。 AES加密算法 AES加密算法是一种对称加密算法,是目前应用最广泛的加密算法之一,具有高度的安全性和可靠性。以下是使用P…

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