PHP 分页
什么是分页?
PHP 中的分页是指将大量数据划分为更小、更易于管理的部分(称为"页面")的过程。它通常用于 Web 应用程序中,以便在每页显示有限数量的记录或结果,从而方便用户轻松浏览数据。
处理大型数据集时,分页至关重要,因为在单个页面上显示所有记录可能会导致性能问题,并使用户界面变得过于繁琐。通过实现分页,您可以提升用户体验并优化应用程序的性能。
PHP 分页程序
在您的工作位置创建一个新的 PHP 文件,并使用您想要的名称保存。
这里我们使用 localhost 数据库中包含 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
// 数据库连接详细信息
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "assignments";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 每页记录数
$recordsPerPage = 10;
// 当前页码
if (isset($_GET['page'])) {
$currentPage = $_GET['page'];
} else {
$currentPage = 1;
}
// 计算起始记录索引
$startFrom = ($currentPage - 1) * $recordsPerPage;
// 分页获取学生数据
$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>";
// 关闭连接
$conn->close();
?>
</body>
</html>
输出

说明
代码的第一部分使用提供的服务器名称、用户名、密码和数据库名称建立数据库连接。然后检查连接是否成功。接下来,设置每页显示的记录数,并根据 URL 参数确定当前页码。它使用当前页面和每页记录数计算起始记录索引。然后,代码执行数据库查询以获取学生数据,并使用 LIMIT 子句仅检索与当前页面相关的记录。它迭代查询结果并以网格布局显示学生数据。
代码的第二部分处理分页。它执行另一个数据库查询以确定"studentdata"表中的记录总数。它通过将总记录数除以每页记录数并向上舍入来计算总页数。然后,代码使用循环生成分页链接。如果总页数大于 1,则为每个页面生成一个链接。当前页面以"active"类高亮显示。最后,关闭数据库连接,HTML代码也随之关闭。总而言之,这段代码检索并显示学生数据,并提供了页面切换的导航链接。
结论
这段PHP代码演示了如何在PHP中实现分页。它利用MySQL数据库获取学生数据子集,并以网格布局显示。代码根据每页记录数计算总页数,并相应地生成分页链接。用户可以通过点击页面链接浏览数据。此实现通过将大型数据集划分为易于管理的部分,提升了性能并避免了UI的过度拥挤,从而改善了用户体验。它展示了实现分页的基本步骤,包括建立数据库连接、使用分页检索数据以及动态生成分页链接。

