php表单实现分页
PHP 表单实现分页
基本分页原理
分页功能通常需要结合 SQL 查询的 LIMIT 子句实现。核心参数包括当前页码 $page 和每页显示数量 $perPage,通过计算偏移量 $offset = ($page - 1) * $perPage 获取数据。

数据库查询示例
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$sql = "SELECT * FROM your_table LIMIT $offset, $perPage";
$result = $conn->query($sql);
计算总页数
需要先查询总记录数以确定分页数量:

$totalQuery = "SELECT COUNT(*) as total FROM your_table";
$totalResult = $conn->query($totalQuery);
$totalRows = $totalResult->fetch_assoc()['total'];
$totalPages = ceil($totalRows / $perPage);
生成分页链接
通过循环生成页码导航,注意处理边界值(如第一页和最后一页):
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
$active = ($i == $page) ? 'active' : '';
echo "<a href='?page=$i' class='$active'>$i</a>";
}
echo '</div>';
样式优化建议
为分页链接添加基础 CSS 样式:
.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;
}
完整示例代码
<?php
// 数据库连接
$conn = new mysqli("localhost", "username", "password", "database");
// 分页参数
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
// 获取数据
$sql = "SELECT * FROM products LIMIT $offset, $perPage";
$result = $conn->query($sql);
// 显示数据
while ($row = $result->fetch_assoc()) {
echo "<div>{$row['name']} - {$row['price']}</div>";
}
// 计算总页数
$totalResult = $conn->query("SELECT COUNT(*) as total FROM products");
$totalPages = ceil($totalResult->fetch_assoc()['total'] / $perPage);
// 分页导航
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
$active = ($i == $page) ? 'active' : '';
echo "<a href='?page=$i' class='$active'>$i</a>";
}
echo '</div>';
?>
注意事项
- 务必对
$_GET['page']进行类型转换和验证,防止 SQL 注入 - 大型数据集建议使用缓存优化查询性能
- 可扩展为 AJAX 分页以提升用户体验






