gpt4 book ai didi

php - 如何使用省略号构建分页

转载 作者:行者123 更新时间:2023-12-02 00:52:19 25 4
gpt4 key购买 nike

所以,我在这里阅读了所有相关问题,但它们不是我在这里问的问题,所以如果你觉得这个问题是重复的,请考虑一些 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

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

最佳答案

嘿,大灰!

你快到了。你只需要检查几件事:

在页数开始或结束的两页内是 $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++) {

if ($i <= 2 || $i >= $count_pages - 2 || abs($i - $page) <= 2) {

// page number should be echoed so do as you did before

$outOfRange = false;

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>";
}
} else {

// we are out of range! if not already out of range, echo ellipsis

if (!$outOfRange) {
echo ' ... ';
}

$outOfRange = true;

}
}

关于php - 如何使用省略号构建分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com