php实现表格分页代码
PHP实现表格分页的方法
在PHP中实现表格分页通常需要结合MySQL数据库查询和分页逻辑。以下是一个完整的分页实现示例:
数据库连接与查询
建立数据库连接并获取总记录数:
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
// 获取总记录数
$sql = "SELECT COUNT(*) as total FROM your_table";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total_records = $row['total'];
分页参数设置
计算分页所需的基本参数:
$records_per_page = 10;
$total_pages = ceil($total_records / $records_per_page);
$current_page = isset($_GET['page']) ? $_GET['page'] : 1;
$offset = ($current_page - 1) * $records_per_page;
分页数据查询
获取当前页的数据:
$sql = "SELECT * FROM your_table LIMIT $offset, $records_per_page";
$result = $conn->query($sql);
显示表格数据
循环输出查询结果:
echo "<table border='1'>";
echo "<tr><th>ID</th><th>Name</th></tr>";
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>".$row['id']."</td>";
echo "<td>".$row['name']."</td>";
echo "</tr>";
}
echo "</table>";
生成分页链接
创建分页导航:
echo "<div class='pagination'>";
for ($i = 1; $i <= $total_pages; $i++) {
$active = ($i == $current_page) ? "active" : "";
echo "<a href='?page=$i' class='$active'>$i</a> ";
}
echo "</div>";
完整示例
将所有代码整合成一个完整的示例:
<?php
// 数据库连接
$conn = new mysqli("localhost", "username", "password", "database");
// 分页逻辑
$records_per_page = 10;
$sql = "SELECT COUNT(*) as total FROM your_table";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total_records = $row['total'];
$total_pages = ceil($total_records / $records_per_page);
$current_page = isset($_GET['page']) ? $_GET['page'] : 1;
$offset = ($current_page - 1) * $records_per_page;
// 数据查询
$sql = "SELECT * FROM your_table LIMIT $offset, $records_per_page";
$result = $conn->query($sql);
// 显示表格
echo "<table border='1'>";
echo "<tr><th>ID</th><th>Name</th></tr>";
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>".$row['id']."</td>";
echo "<td>".$row['name']."</td>";
echo "</tr>";
}
echo "</table>";
// 分页导航
echo "<div class='pagination'>";
for ($i = 1; $i <= $total_pages; $i++) {
$active = ($i == $current_page) ? "active" : "";
echo "<a href='?page=$i' class='$active'>$i</a> ";
}
echo "</div>";
$conn->close();
?>
样式优化
可以为分页添加CSS样式:
.pagination {
margin-top: 20px;
}
.pagination a {
padding: 8px 16px;
text-decoration: none;
border: 1px solid #ddd;
margin: 0 4px;
}
.pagination a.active {
background-color: #4CAF50;
color: white;
border: 1px solid #4CAF50;
}
.pagination a:hover:not(.active) {
background-color: #ddd;
}
注意事项
- 确保对用户输入的页码进行验证,防止SQL注入
- 考虑使用预处理语句提高安全性
- 对于大型数据集,可以考虑使用AJAX实现无刷新分页
- 可以添加"上一页"和"下一页"按钮增强用户体验
这种分页方法适用于大多数PHP网站,可以根据实际需求调整每页显示的记录数和样式。







