默默小谈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日

相关文章

  • 利用PHP将部分内容用星号替换

    针对您的问题,以下是我给出的“利用PHP将部分内容用星号替换”的完整攻略。 第一步:使用str_replace函数 str_replace函数是PHP中常用的替换函数,它可以将指定的字符串或字符替换成另一个字符串,我们可以使用这个函数来实现将部分内容用星号替换的功能。 具体使用方法如下: $str = ‘hello, world’; //待替换的原始字符串 …

    PHP 2023年5月26日
    00
  • 微信小程序如何获取用户信息

    微信小程序可以通过用户授权方式来获取用户信息,具体步骤如下: 在微信公众平台中,开发者需要设置小程序的“授权选项”,勾选需要获取的用户信息。 在小程序中,调用wx.login()获取用户code,然后使用wx.getUserInfo()方法获取用户信息。 下面是两个示例: 示例一: 打开 app.json 文件,配置一下小程序可以获取到的用户数据。 { &q…

    PHP 2023年5月23日
    00
  • golang与php实现计算两个经纬度之间距离的方法

    当我们需要计算两个经纬度之间的距离时,有多种编程语言和算法可以选择,其中Go和PHP都提供了比较简便的方法,下面我会详细讲解它们的实现方法。 Go语言实现 Go语言没有提供直接计算经纬度距离的函数,但它有一个内置的 math 包,提供了一个函数 math.Sin(),可以帮助我们计算一个角度的正弦值,而这个值可以根据地球半径和纬度差、经度差来计算出两点之间的…

    PHP 2023年5月26日
    00
  • PHP list() 将数组中的值赋给变量的简单实例

    下面我将详细讲解PHP中使用list()函数将数组中的值赋给变量的简单实例。 首先,list()函数是一个内置函数,用于将数组中的值赋给变量。它接收一个数组作为参数,并按照数组中的顺序将值赋给变量。 下面是具体的操作步骤: 1. 声明一个数组 首先,我们需要声明一个数组,以便使用list()函数将它的值赋给变量。下面是一个简单的数组示例: <?php …

    PHP 2023年5月27日
    00
  • 机械师F117-V值得买吗 机械师F117-V游戏本全面评测

    机械师F117-V值得买吗?——游戏本全面评测 前言 机械师F117-V是一款高性能游戏本,其配置和设计均表现出了极高的竞争力。但是用户在购买前还是需要了解该设备是否值得购买,本文将对机械师F117-V进行全面评测,帮助用户做出明智的购买决策。 设计 机械师F117-V采用了全黑色金属外壳,给人以非常沉稳豪华的感觉。同时机身重量为2.2kg,也非常适合携带。…

    PHP 2023年5月27日
    00
  • PHP实现文件上传与下载实例与总结

    以下是详细的“PHP实现文件上传与下载实例与总结”的攻略: PHP实现文件上传 1. HTML表单 文件上传需要通过HTML表单来完成,表单中需要包含 enctype=”multipart/form-data” 属性。 <form method="POST" action="./upload.php" encty…

    PHP 2023年5月26日
    00
  • php实现的XML操作(读取)封装类完整实例

    接下来我将详细讲解“php实现的XML操作(读取)封装类完整实例”的完整攻略。 1. 需求分析 首先,我们需要明确我们的需求,也就是我们需要实现一个XML读取类,用于读取XML文件中的内容。该类需要封装读取XML文件的详细实现细节,并提供一个简单易用的接口供其他程序使用。 2. 设计思路 在设计上述类时,我们需要考虑以下几个因素: 使用何种方式读取XML文件…

    PHP 2023年5月26日
    00
  • php获取客户端IP及URL的方法示例

    获取客户端IP及URL是web开发中常用的操作之一,本文将对php获取客户端IP及URL的方法进行详细讲解。 获取客户端IP 获取客户端IP的方法有多种,常用的有以下三种: 1、使用REMOTE_ADDR获取IP 使用PHP的$_SERVER[‘REMOTE_ADDR’]可以获取到客户端的IP地址,方法如下: $clientIp = $_SERVER[‘RE…

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