PHP实现首页文章分页:每页限制3篇文章
PHP实现文章分页(每页3篇)完整方案
我来帮你搞定这个分页问题,按照你的需求,每页显示3篇文章,咱们一步步来实现:
1. 先搞定分页核心逻辑(数据库查询部分)
首先要完善你现有的数据库查询代码,加入分页参数处理、总页数计算这些关键逻辑,替换你原来的查询代码就行:
<title>Noticias</title> <?php // 连接数据库 include('admin/config.php'); // 处理当前页码,默认显示第1页 $current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 每页固定显示3篇文章 $per_page = 3; // 计算偏移量(告诉数据库从第几条数据开始取) $offset = ($current_page - 1) * $per_page; // 查询当前页要展示的文章(按发布时间倒序,最新的在前) $select_news = "SELECT * FROM News ORDER BY created_at DESC LIMIT $offset, $per_page"; $result = mysqli_query($conn, $select_news); // 查询总文章数,用来计算总共有多少页 $count_query = "SELECT COUNT(*) AS total FROM News"; $count_result = mysqli_query($conn, $count_query); $total_row = mysqli_fetch_assoc($count_result); $total_news = $total_row['total']; // 计算总页数,用ceil向上取整(比如7篇文章就是3页) $total_pages = ceil($total_news / $per_page); ?>
2. 循环渲染当前页的文章列表
接下来把当前页的文章循环输出到页面上,你可以根据自己的HTML结构调整,这里给个基础示例:
<!-- 文章列表容器,你可以自己加样式 --> <div class="news-container"> <?php while($news = mysqli_fetch_assoc($result)): ?> <div class="news-card"> <h2><?php echo htmlspecialchars($news['title']); ?></h2> <p><?php echo substr(htmlspecialchars($news['content']), 0, 180); ?>...</p> <!-- 文章详情页链接,假设你有news-detail.php页面 --> <a href="news-detail.php?id=<?php echo $news['id']; ?>">Ver más</a> </div> <?php endwhile; ?> </div>
3. 生成分页导航链接(解决你困惑的href问题)
这部分就是实现上一页、下一页和页码按钮的关键,直接放在文章列表下面就行:
<!-- 分页导航栏 --> <div class="pagination"> <!-- 上一页按钮,只有当前页不是第1页时显示 --> <?php if($current_page > 1): ?> <a href="?page=<?php echo $current_page - 1; ?>">← Anterior</a> <?php endif; ?> <!-- 页码按钮,遍历所有页数 --> <?php for($i = 1; $i <= $total_pages; $i++): ?> <a href="?page=<?php echo $i; ?>" <?php echo $i == $current_page ? 'class="active"' : ''; ?>> <?php echo $i; ?> </a> <?php endfor; ?> <!-- 下一页按钮,只有当前页不是最后一页时显示 --> <?php if($current_page < $total_pages): ?> <a href="?page=<?php echo $current_page + 1; ?>">Siguiente →</a> <?php endif; ?> </div>
几个重要的注意点
- 安全问题:用
(int)转换页码参数可以防止SQL注入,另外输出文章标题、内容时用htmlspecialchars()转义,避免XSS攻击;如果想更安全,可以用MySQLi预处理语句来执行查询。 - 用户体验:如果总页数只有1页,可以把分页导航隐藏掉,避免显示多余的按钮。
- 样式调整:你可以给分页按钮加CSS样式,比如给当前页的按钮加个高亮效果,让用户清楚自己在第几页。
内容的提问来源于stack exchange,提问作者Gustavo Gbn
相关产品推荐
相关产品推荐

