php实现分页导航
实现分页导航的基本思路
分页导航的核心是根据当前页码和总页数生成分页链接,通常包括首页、上一页、页码列表、下一页和末页。PHP中可以通过计算当前页、总页数和生成HTML链接来实现。
获取当前页码和总记录数
从请求参数中获取当前页码,默认设为1。同时需要从数据库查询总记录数,用于计算总页数。

$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10; // 每页显示的记录数
$totalCount = 100; // 从数据库获取的总记录数
$totalPages = ceil($totalCount / $perPage);
生成分页链接HTML
创建一个函数来生成分页导航的HTML,包含首页、上一页、页码列表、下一页和末页。
function generatePagination($currentPage, $totalPages, $url = '?page=') {
$html = '<div class="pagination">';
// 首页
if ($currentPage > 1) {
$html .= '<a href="' . $url . '1">首页</a>';
} else {
$html .= '<span class="disabled">首页</span>';
}
// 上一页
if ($currentPage > 1) {
$html .= '<a href="' . $url . ($currentPage - 1) . '">上一页</a>';
} else {
$html .= '<span class="disabled">上一页</span>';
}
// 页码列表
$start = max(1, $currentPage - 2);
$end = min($totalPages, $currentPage + 2);
for ($i = $start; $i <= $end; $i++) {
if ($i == $currentPage) {
$html .= '<span class="current">' . $i . '</span>';
} else {
$html .= '<a href="' . $url . $i . '">' . $i . '</a>';
}
}
// 下一页
if ($currentPage < $totalPages) {
$html .= '<a href="' . $url . ($currentPage + 1) . '">下一页</a>';
} else {
$html .= '<span class="disabled">下一页</span>';
}
// 末页
if ($currentPage < $totalPages) {
$html .= '<a href="' . $url . $totalPages . '">末页</a>';
} else {
$html .= '<span class="disabled">末页</span>';
}
$html .= '</div>';
return $html;
}
调用分页函数并显示
在页面中调用分页函数并显示生成的HTML。

echo generatePagination($currentPage, $totalPages);
结合数据库查询
通常分页需要与数据库查询结合,使用LIMIT和OFFSET来实现数据分页。
$offset = ($currentPage - 1) * $perPage;
$sql = "SELECT * FROM table_name LIMIT $offset, $perPage";
// 执行查询并获取结果
添加CSS样式
为分页导航添加基本的CSS样式,使其更美观。
.pagination {
margin: 20px 0;
text-align: center;
}
.pagination a, .pagination span {
display: inline-block;
padding: 5px 10px;
margin: 0 2px;
border: 1px solid #ddd;
text-decoration: none;
color: #333;
}
.pagination a:hover {
background: #eee;
}
.pagination .current {
background: #007bff;
color: #fff;
border-color: #007bff;
}
.pagination .disabled {
color: #aaa;
cursor: not-allowed;
}
注意事项
- 确保当前页码不超过总页数范围。
- 对用户输入的页码进行验证,防止SQL注入或其他安全问题。
- 可以根据需求调整显示的页码数量,例如显示更多或更少的页码链接。






