【问题标题】:To limit the number of pages shown in pagination限制分页中显示的页数
【发布时间】:2018-06-22 16:13:21
【问题描述】:
  <?php

  global $con;

  $get_mov = "SELECT * FROM movies";
  $run_mov = mysqli_query($con, $get_mov); 

  $number_of_movies = mysqli_num_rows($run_mov);

  $number_of_pages = ceil($number_of_movies/4);

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

 $this_page_first_result = ($page-1)*4;

 $get_mov = "SELECT * FROM movies order by movie_released DESC  LIMIT "  . 
 $this_page_first_result.  ',' . 4;

 $run_mov = mysqli_query($con, $get_mov);

 while ($row_mov = mysqli_fetch_array($run_mov)) {
  $mov_id = $row_mov['movie_id']; 
  $mov_desc = $row_mov['movie_desc'];
  $mov_title = $row_mov['movie_title'];
  $mov_cat = $row_mov['movie_cat'];

  echo " 

    <article id ='post-8045' class='article'>

                    <h4><a href='single.php?mov_id=$mov_id' style='text- 
   decoration:none'>$mov_title</a></h4>
                    <p>$mov_desc</p>

                </article>


   ";
   }
   ?>
                <nav class="float-right">



                    <ul class="pagination">
                        <li class="page-item"><a class="page-link" href="? 
  page=<?php $pagep = $page-1; echo $pagep; ?>" aria-label="Previous"><span 
  aria-hidden="true">«</span></a></li>

                      <?php
                       for($page=1;$page<=$number_of_pages;$page++) { 
                        echo "<li class='page-item'><a href='index.php? 
   page=$page' class='page-link' style='text- 
   decoration:none;color:black;'>$page</a></li>"; 
                             }
                     ?>

                        <li class="page-item"><a class="page-link" href="? 
   page=<?php $pagen = $page+1; echo $pagen; ?>" aria-label="Next"><span 
   aria-hidden="true">»</span></a></li>
                    </ul>
                </nav>

这是我的代码...我要显示的页面太多,所以他们会排长队,例如..1 2 3 4 5 6 7 8 9 10 11 12 等等。此外,下一个按钮查询也不起作用...... 我想将它们限制为 > ... 而不是... 我搜索了整个网络和 youtube,并联系了我认识的所有同行..但一无所获... 更多信息: “电影”是我的数据库名称。

【问题讨论】:

  • 到目前为止你做了什么?分享您的代码...我们不是来为您编写免费代码的。以下是如何询问good question
  • 请在您的问题中提供一些细节。首先向我们展示您是如何创建分页的,您尝试过什么来解决您的问题,非常具体,更好的帮助机会。

标签: php pagination


【解决方案1】:

好的,所以您想限制分页中的页面链接数。首先,您需要制定您的要求,在您的问题中,您只说“我想将这些限制为 >”,这还不够规范。所以让我们试试这个规范:

  • 我们需要最多 6 个页面链接
  • 当我们在第一页和第二页时,链接应该是>
  • 当我们在第k页时,链接应该是>
  • 除非 k
  • 除非k>n-3,总页数为n,那么我们要>

所以现在我们必须找到一种足够简单但又能满足所有这些要求的算法。一种方法是

$start = max(min($k-2, $n-5), 1);
$end = min($start+5, $n);

带测试的完整代码:

function print_pagination($n, $k)
{
  printf("%d pages, we are on %d:\n", $n, $k);
  $start = max(min($k-2, $n-5), 1);
  $end = min($start+5, $n);
  for ($i=$start; $i<=$end; $i++) {
    if ($i==$k)
      printf('%d ', $i);
    else
      printf('<a href="...">%d</a> ', $i);
  }
  echo("\n");
}

print_pagination(10, 1);
print_pagination(10, 3);
print_pagination(10, 6);
print_pagination(10, 10);

print_pagination(3, 1);
print_pagination(3, 2);
print_pagination(3, 3);

【讨论】:

  • 非常感谢卡斯滕..你不知道你帮了我很多..我永远不会回报这个..再次感谢你..如果你在我面前..我会一定要拥抱你
猜你喜欢
  • 2014-10-14
  • 1970-01-01
  • 2018-04-19
  • 2021-05-16
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
相关资源
最近更新 更多