【问题标题】:Pagination shows more pages分页显示更多页面
【发布时间】:2017-11-29 05:15:38
【问题描述】:

我无法弄清楚这一点,并且已经花费了几个小时。分页将页数增加到帖子页数意味着如果 2 页显示数据,则 2 个空白页显示,如果 3 页显示数据,那么它将再增加 3 页,依此类推。任何帮助将不胜感激。页面增加到显示的帖子数量意味着如果帖子数量显示在 2 页上,则分页下一个按钮显示另外 2 个空白页如果帖子数量显示在 3 页上,那么它将空白页增加到 3 页

php:

<?php
         $page = (isset($_GET['page']) && $_GET['page'] > 0) ? (int)$_GET['page'] : 1;

        $perpage = 10;
        //$limit = ($page > 1) ? (((($page *2)+1)-3)* $perpage) - $perpage : 0;
        $limit = ((($page*2)+1)-3)*$perpage;

        $query = mysqli_query($dbc, "SELECT SQL_CALC_FOUND_ROWS * FROM final1 LIMIT {$limit}, {$perpage}");
        $records = mysqli_fetch_all($query);

        $total = mysqli_query($dbc, "SELECT FOUND_ROWS() as total");
        $total = mysqli_fetch_assoc($total)['total'];

        $pages = ceil($total/$perpage);
        ?>

<?php 
              if($page>1){
                ?>
                <a class="page-link" href="?page=<?php $pagep = $page -1; echo $pagep; ?>" tabindex="-1">Previous</a>
                <?php
              }
              ?>
            </li>
            <li class="page-item">
              <?php 
              if($page<$pages){
                ?>
                <a class="page-link" href="?page=<?php $pagen = $page +1; echo $pagen; ?>">Next</a>
                <?php
              }
              ?>

【问题讨论】:

  • 不清楚你在问什么。
  • 页数增加到显示的帖子数意味着如果帖子数显示在 2 页上然后分页下一步按钮显示 2 个空白页如果帖子数显示在 3 页上然后它将空白页增加到 3页面..
  • 这个((($page*2)+1)-3)*$perpage 不会产生正确的偏移量(你在这里称之为限制)。那是你的问题。
  • @LinneaAnderson 请在问题正文中进行澄清,而不是 cmets,可以轻松删除。
  • 是的,在限制:$limit = ($page-1)*$perpage;

标签: php pagination


【解决方案1】:

您的计算 $limit = ((($page*2)+1)-3)*$perpage; 没有得到您需要的结果。

要解决这个问题 - 对于正常的分页,将其更改为

$limit = ($page-1)*$perpage;

但是让我们先修正你的变量名,这样会更清楚它是如何工作的。
LIMIT 的 Sql 语法是

[LIMIT {[offset,] row_count | row_count OFFSET 偏移量}]

所以让我们将第一个变量重命名为to $offset,将第二个变量重命名为$rowCount

$offset = ($page-1)*$rowCount;

现在到你的特殊情况
“你能告诉我如何只显示这样的帖子吗?首先从 0 到 10,然后在下一页它将显示从 20 到 40”
然后你还需要为每个页面更改$perpage

// $page = 3; // set here only for testing
$rowCount = $page*10;
$offset = ($page-1)*$rowCount;
echo $offset.','.$rowCount;

// results:
// page=1 - 0,10
// page=2 - 20,20
// page=3 - 60,30


// So your SQL then will be 
"SELECT SQL_CALC_FOUND_ROWS * FROM final1 LIMIT {$offset}, {$rowCount}"

【讨论】:

  • 首页显示 1-10 这很正常,现在下一页显示从 20-30.. 然后另一个下一页显示从 40-50,然后 60-70 就像它显示的行仅从偶数开始并忽略奇数......感谢它的工作原理!
  • 20 等价于 0,我们不需要 19。我错了
猜你喜欢
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
相关资源
最近更新 更多