PHP 分页


什么是分页?

PHP 分页是指将大型数据集分割成更小、更易于管理的部分(称为“页”)的过程。它通常用于 Web 应用程序中,以便每页显示有限数量的记录或结果,从而使用户能够轻松浏览数据。

处理大型数据集时,分页至关重要,因为在一页上显示所有记录会导致性能问题和用户界面过于复杂。通过实现分页,您可以改善用户体验并优化应用程序的性能。

PHP 分页程序

  • 在您的工作目录中创建一个新的 PHP 文件,并使用您想要的名称保存它。

  • 这里我们使用包含 121 条记录的 studentdata 表,该表位于本地主机数据库中。

示例

这是一个在 PHP 中实现分页的示例,用于从数据库中每页显示 10 条学生数据记录。

<!DOCTYPE html>
<html>
<head>
   <style>
     /* Grid styles */
     .grid-container {
       display: grid;
       grid-template-columns: repeat(3, 1fr);
       grid-gap: 10px;
       margin-bottom: 20px;
     }

     .grid-item {
       background-color: #f2f2f2;
       padding: 10px;
       text-align: center;
     }

     /* Table styles */
     table {
       border-collapse: collapse;
       width: 100%;
     }

     th, td {
       padding: 8px;
       text-align: left;
       border-bottom: 1px solid #ddd;
     }

     th {
       background-color: #4CAF50;
       color: white;
     }

     /* Pagination styles */
     .pagination {
       display: inline-block;
     }

     .pagination a {
       color: black;
       float: left;
       padding: 8px 16px;
       text-decoration: none;
       border: 1px solid #ddd;
     }

     .pagination a.active {
       background-color: #4CAF50;
       color: white;
       border: 1px solid #4CAF50;
     }

     .pagination a:hover:not(.active) {
       background-color: #ddd;
     }
   </style>
</head>
<body>
   <?php
   // Database connection details
   $servername = "localhost";
   $username = "root";
   $password = "";
   $dbname = "assignments";

   // Create connection
   $conn = new mysqli($servername, $username, $password, $dbname);

   // Check connection
   if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
   }

   // Number of records per page
   $recordsPerPage = 10;

   // Current page number
   if (isset($_GET['page'])) {
     $currentPage = $_GET['page'];
   } else {
     $currentPage = 1;
   }

   // Calculate the starting record index
   $startFrom = ($currentPage - 1) * $recordsPerPage;

   // Fetch student data with pagination
   $sql = "SELECT * FROM studentdata LIMIT $startFrom, $recordsPerPage";
   $result = $conn->query($sql);

   if ($result->num_rows > 0) {
     // Display student data
     echo "<div class='grid-container'>";
     echo "<div class='grid-item'><strong>ID</strong><
/div>";
     echo "<div class='grid-item'><strong>Name</strong><
/div>";
     echo "<div class='grid-item'><strong>Age</strong><
/div>";

     while ($row = $result->fetch_assoc()) {
       echo "<div class='grid-item'>" . $row["id"] . "</div>";
       echo "<div class='grid-item'>" . $row["name"] . "</div>";
       echo "<div class='grid-item'>" . $row["age"] . "</div>";
     }

     echo "</div>";
   } else {
     echo "No records found.";
   }

   // Pagination links
   $sql = "SELECT COUNT(*) AS total FROM studentdata";
   $result = $conn->query($sql);
   $row = $result->fetch_assoc();
   $totalRecords = $row["total"];
   $totalPages = ceil($totalRecords / $recordsPerPage);

   echo "<div class='pagination'>";

   if ($totalPages > 1) {
     for ($i = 1; $i <= $totalPages; $i++) {
       if ($i == $currentPage) {
         echo "<a class='active' href='?page=$i'>$i</a> ";
       } else {
         echo "<a href='?page=$i'>$i</a> ";
       }
     }
   }

   echo "</div>";

   // Close the connection
   $conn->close();
   ?>
</body>
</html>

输出

解释

代码的第一部分使用提供的服务器名称、用户名、密码和数据库名称建立数据库连接。然后检查连接是否成功。接下来,它设置每页要显示的记录数,并根据 URL 参数确定当前页码。它使用当前页码和每页记录数计算起始记录索引。然后,代码执行数据库查询以使用 LIMIT 子句获取学生数据,以便仅检索当前页面的相关记录。它遍历查询结果并在网格布局中显示学生数据。

代码的第二部分处理分页。它执行另一个数据库查询以确定“studentdata”表中的记录总数。它通过将记录总数除以每页记录数并向上取整来计算总页数。然后,代码使用循环生成分页链接。如果总页数大于 1,则会为每一页生成一个链接。当前页使用“active”类突出显示。最后,关闭数据库连接并关闭 HTML 代码。总的来说,这段代码检索并显示带有分页的学生数据,并提供在页面之间切换的导航链接。

结论

PHP 代码演示了在 PHP 中实现分页的方法。它利用 MySQL 数据库来获取学生数据子集并在网格布局中显示它。代码根据每页记录数计算总页数,并相应地生成分页链接。用户可以通过单击页面链接来浏览数据。此实现通过将大型数据集划分为可管理的部分来改善用户体验,从而提高性能并防止用户界面过于复杂。它展示了实现分页所涉及的基本步骤,包括建立数据库连接、使用分页检索数据以及动态生成分页链接。

更新于:2023年8月1日

3K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.