如何使用省略号构建分页

所以,我在这里阅读了所有相关问题,但它们不是我在这里问的问题,所以如果您觉得这个问题是重复的,请考虑一些 PHP 新手问这个问题,谁找不到任何好的答案,我也问请这样做不要投反对票,这也许有人想帮助我。谢谢


顺便说一句,这是我的分页代码:


<?php

$per_page = 10;


       if(isset($_GET['page'])){

        $page = $_GET['page'];

       } else {

         $page = 1;

       }


       if($page == "" || $page == 1) {

         $page_1 = 0;

       } else {

         $page_1 = ($page * $per_page) - $per_page;

       }

$item_count = "SELECT * FROM products";

    $find_count = mysqli_query($connection, $item_count);

    $count = mysqli_num_rows($find_count);

    $count_pages = ceil($count / $per_page) ;

?>


<ul class="pagination">

<?php

       for($i = 1; $i <= $count_pages; $i++){


        if($i == $page) {


          echo "<li><a class='active-page' href='./latest.php?page=$i'>$i</a></li>";


        } else {


          echo "<li><a href='./latest.php?page=$i'>$i</a></li>";

        }


        }   

        ?>  

</ul>

代码通过 Get 请求获取页码,并对页数进行循环。分页输出是这样的:


1 2 3 4 5 6 7 8 9 10


但我不想像上面那样显示,我想用 "..." 缩短它,如果用户在第 3 页,就像这样:


1 2 3 4 5 ... 9 10


或用户在第 9 页:


1 2 ... 7 8 9 10


我怎样才能操纵这段代码来实现这一目标?


慕桂英3389331
浏览 156回答 1
1回答

智慧大石

嘿,大灰!你快到了。你只需要检查几件事:在页数开始或结束的两页内是 $i。这很容易,对吧?if ($i <= 2 || $i >= $count_pages - 2)$i 是否在当前页面的两页之内?这是通过if (abs($i - $page) <= 2)所以现在问题仍然存在:什么时候放省略号?如果每次不满足上述条件时都只 echo '...' ,您最终会得到一大堆省略号,对吧?此外,您可能需要两个省略号(假设有 20 页并且您在第 10 页。您需要 '1 2 ... 8 9 10 11 12 ... 19 20)。我确信有一种更优雅的方法,但我只使用一个标志 ($outOfRange),当满足上述任何条件时设置为 false,但在不满足时设置为 true。然后我们仅在不满足条件但 $outOfRange 仍然为 false 时回显 '...'。所以我们有:$outOfRange = false;for($i = 1; $i <= $count_pages; $i++) {&nbsp; &nbsp; if ($i <= 2 || $i >= $count_pages - 2 || abs($i - $page) <= 2) {&nbsp; &nbsp; &nbsp; &nbsp; // page number should be echoed so do as you did before&nbsp; &nbsp; &nbsp; &nbsp; $outOfRange = false;&nbsp; &nbsp; &nbsp; &nbsp; if($i == $page) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<li><a class='active-page' href='./latest.php?page=$i'>$i</a></li>";&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<li><a href='./latest.php?page=$i'>$i</a></li>";&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; // we are out of range! if not already out of range, echo ellipsis&nbsp; &nbsp; &nbsp; &nbsp; if (!$outOfRange) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo ' ... ';&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; $outOfRange = true;&nbsp; &nbsp; }}&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP