You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:00:56