首页 > 解决方案 > 分页自定义博客脚本

问题描述

过去几天我一直在开发基于 Bootstrap 4 的自定义博客脚本,除了主页上的分页之外,我几乎完成了,我已经用页面编码了上半部分(主要是从数据库中获取计数)但是“旧帖子>”部分给我带来了问题,我从来没有很好的分页。

代码:

  <!-- Main Content -->
  <div class="container">
    <div class="row">
      <div class="col-lg-8 col-md-10 mx-auto">

        <?php 

           if (isset($_GET['page'])) {
                $page = $_GET['page'];
           } else {
                $page = 1;
           }

           $max_results = 50;
           $from = $page * $max_results - $max_results;

           $posts = DB::getInstance()->select('
                SELECT  *
                FROM    `blog_posts`
                ORDER   BY `post_date` DESC
                LIMIT   :from, :max_results',
           [
                'from' => [
                    'type' => PDO::PARAM_INT,
                    'value' => $from
                ],
                'max_results' => [
                    'type' => PDO::PARAM_INT,
                    'value' => $max_results
                ]
           ]);

           $total_results = DB::getInstance()->selectValue('SELECT count(*) FROM `blog_posts`');

           if ($total_results < 1) {
               stderr('There is <b>no</b> posts yet!');
           } else {            

        ?>

            <?php foreach($posts as $post) { ?>

            <div class="post-preview">
              <a href="post.html"><h2 class="post-title"><?= urlFriendlyUrls($post['post_title'], $post['post_id']); ?></h2></a>
              <p class="post-meta"><?= truncateArticle($post['post_body'], 250); ?></p>
              <p class="post-meta">Posted by <a href="#">Start Bootstrap</a> on <?= date("F j, Y, g:i a", strtotime($post['post_date'])); ?></p>
            </div>
            <hr>

            <?php } ?>  

        <?php } ?>  

        <!-- Pager -->
        <div class="clearfix">
          <a class="btn btn-primary float-right" href="#">Older Posts &rarr;</a>
        </div>

      </div>

    </div>
  </div>

我不知道在可点击链接部分编码的最佳方式,任何正确方向的帮助将不胜感激。

标签: php

解决方案


修改您的查询以限制基于$_GET['page']使用 OFFSET 和 LIMIT 或任何 PDO 获得的结果量。

下一步是让您的Older Posts按钮指向同一个网页,但page=$_GET['page'] - 1在 url 中。

因此,您应该在每次点击时都转到上一页Older Posts- 您可能还希望将其限制为 0。


推荐阅读