php分页简单实现
PHP 分页实现方法
基本分页逻辑
通过计算总记录数、每页显示数量和当前页码实现分页。需要以下关键变量:
$total_records = 100; // 总记录数
$per_page = 10; // 每页显示数量
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 当前页码
$total_pages = ceil($total_records / $per_page); // 总页数
数据库查询分页
结合 MySQL 的 LIMIT 子句实现数据分页查询:
$offset = ($current_page - 1) * $per_page;
$sql = "SELECT * FROM table_name LIMIT $offset, $per_page";
$result = mysqli_query($conn, $sql);
分页链接生成
创建可点击的分页导航链接:
for ($i = 1; $i <= $total_pages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
完整示例代码
// 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "database");
// 获取总记录数
$count_result = mysqli_query($conn, "SELECT COUNT(*) FROM products");
$total_records = mysqli_fetch_array($count_result)[0];
// 分页参数
$per_page = 5;
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$total_pages = ceil($total_records / $per_page);
// 数据查询
$offset = ($current_page - 1) * $per_page;
$sql = "SELECT * FROM products LIMIT $offset, $per_page";
$result = mysqli_query($conn, $sql);
// 显示数据
while ($row = mysqli_fetch_assoc($result)) {
echo $row['product_name']."<br>";
}
// 分页导航
for ($i = 1; $i <= $total_pages; $i++) {
echo "<a href='?page=$i'".($i == $current_page ? " class='active'" : "").">$i</a> ";
}
分页样式优化
添加 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;
}
.pagination a:hover:not(.active) {
background-color: #ddd;
}
分页安全考虑
对页码参数进行验证和过滤:
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($current_page < 1) $current_page = 1;
if ($current_page > $total_pages) $current_page = $total_pages;
分页扩展功能
添加上一页和下一页按钮:
if ($current_page > 1) {
echo "<a href='?page=".($current_page - 1)."'>上一页</a> ";
}
if ($current_page < $total_pages) {
echo "<a href='?page=".($current_page + 1)."'>下一页</a>";
}






