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 pagerecordsPerPage = 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 paginationsql = "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 linkssql = "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 connectionconn->close();
?>
</body>
</html>
输出
说明
代码的第一部分使用提供的服务器名、用户名、密码和数据库名建立了一个数据库连接。然后它检查连接是否成功。接下来,它设置每页显示的记录数,并根据URL参数确定当前页码。它使用当前页和每页记录数的值计算起始记录索引。然后,代码执行数据库查询,使用LIMIT子句仅检索当前页的相关记录来获取学生数据。它遍历查询结果,并以网格布局显示学生数据。
代码的第二部分处理分页。它执行另一个数据库查询来确定”studentdata”表中的总记录数。它通过将总记录数除以每页记录数的值并四舍五入来计算总页数。然后,代码使用循环生成分页链接。如果总页数大于1,它为每个页面生成一个链接。当前页用”active”类突出显示。最后,关闭数据库连接并关闭HTML代码。总体而言,此代码使用分页检索并显示学生数据,并提供导航链接以在不同页面之间切换。
结论
PHP代码演示了PHP中分页的实现。它利用MySQL数据库获取学生数据的子集,并以网格布局显示该数据。代码根据每页记录数计算总页数,并相应地生成分页链接。用户可以通过点击页面链接浏览数据。这种实现通过将大型数据集划分为可管理的部分,提高了用户体验,提升了性能,防止了界面过载。它展示了实现分页的基本步骤,包括建立数据库连接、分页检索数据和动态生成分页链接。