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

yizhihongxing

介绍

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日

相关文章

  • 滴滴出行卡是什么 滴滴出行卡用法介绍

    滴滴出行卡介绍 滴滴出行卡是滴滴出行推出的一项增值服务,用户可以通过购买滴滴出行卡来获得更多的优惠和福利。滴滴出行卡有多种不同的类型,包括月卡、季卡、年卡等,每种类型的卡片都有不同的有效期和使用规则。 滴滴出行卡的购买方式 用户可以在滴滴出行 app 内的“我的”页面中找到“滴滴出行卡”模块,选择所需的类型和金额,即可进行支付购买。 另外,用户也可以在淘宝、…

    PHP 2023年5月30日
    00
  • token验证

    token验证 什么是token?我相信很多开发者都或多或少听过基于 token 的用户鉴权和基于 session 的用户鉴权,而今天说的 token 验证就是第一种了。token 的意思是“令牌”,是用户第一次登录服务器返回的,它能让用户不需要提交账户和密码就能进行服务器验证身份,它是被放在请求头中一起提交给服务器的。 为什么用 token 验证?怎么用 …

    PHP 2023年4月17日
    00
  • php实现对文件压缩简单的方法

    接下来我会详细讲解如何使用PHP实现对文件压缩的简单方法。 1. 使用ZipArchive类来压缩文件 ZipArchive是PHP提供的一个压缩/解压缩类,它可以让我们轻松地对文件或目录进行归档压缩。下面是一个使用ZipArchive类对文件进行压缩的示例。 1.1 示例1 // 创建ZipArchive对象 $zip = new ZipArchive()…

    PHP 2023年5月27日
    00
  • JavaScript浏览器的跨域问题解决方案

    JavaScript浏览器的跨域问题解决方案是在Web开发中经常遇到的问题,本文将从以下四个方面进行详细说明: 什么是跨域问题 跨域问题解决方案 JSONP解决跨域问题 CORS解决跨域问题 1. 什么是跨域问题 在Web开发过程中,当一个页面通过ajax异步请求获取其它域名下的资源时,会出现跨域问题。例如,当前网页为http://www.example.c…

    PHP 2023年5月23日
    00
  • matlab2014a怎么激活?matlab2014a安装破解激活图文详细教程

    如果你想要激活Matlab2014a,并且想要了解更具体的安装破解激活过程,可以按照以下步骤来操作: 步骤1:下载Matlab 首先,在Math Works官网上找到Matlab2014a的下载链接,下载完整版的Matlab2014a安装包。 步骤2:安装Matlab 下载完成后,打开Matlab的安装包文件,并根据提示进行安装。安装过程中,需要注意选择合适…

    PHP 2023年5月27日
    00
  • 五种单件模式之Singleton的实现方法详解

    五种单件模式之Singleton的实现方法详解 什么是单例模式? 单例模式是一种常用的设计模式之一,它的目的在于保证一个类仅有一个实例,并提供一个访问该实例的全局访问点。 Singleton模式的实现方法 方法一:懒汉式 在第一次调用getInstance()方法时,才会创建实例进行初始化。 示例代码: class Singleton { private s…

    PHP 2023年5月27日
    00
  • PHP文件读写操作相关函数总结

    PHP文件读写操作相关函数总结 PHP作为一种Web开发语言,对于文件的读写操作自然是必不可少的。在本文中,我们将总结一些常用的PHP文件读写相关函数,以便开发者更好的熟悉这些函数,以及如何正确使用它们。 文件读操作 PHP文件读操作主要由 fopen、fgets、feof 以及 fclose 这些函数组成。其中,fopen 函数用来打开文件,fgets 函…

    PHP 2023年5月23日
    00
  • php基础知识:控制结构

    接下来我会给你详细讲解 “PHP基础知识: 控制结构” 的完整攻略。 什么是控制结构 控制结构是一种在程序中控制代码执行顺序的方式,通常有三个类型: 顺序结构、选择结构、循环结构。 顺序结构 顺序结构是指按照程序代码的文字顺序执行的结构,在这种结构中,上一组代码执行完后,才会执行下一组代码。 例如以下代码就是一个简单的顺序结构示例: <?php ech…

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