所以我的网站上有一个简单的分页系统。但是我对下一页的计算存在问题。每当页面在第2页上时,下一页是13而不是3.我已经测试了计算,结果总是以3结果。这是我的代码:
<?php
$applied_filters = array("parent" => null, "child" => null);
if(isset($_GET['cat'])) {
$applied_filters["parent"] = $_GET['cat'];
if(isset($_GET['sub']))
$applied_filters["child"] = $_GET['sub'];
}
if(isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}
$products_per_page = 9;
$start_from = ($page-1) * $products_per_page;
$pagination_url = "winkel.php?";
if($applied_filters["parent"] != null) {
$pagination_url .= "cat=" . $applied_filters["parent"];
if($applied_filters["child"] != null) {
$pagination_url .= "&sub=" . $applied_filters["child"] . "&page=";
} else {
$pagination_url .= "&page=";
}
} else {
$pagination_url .= "page=";
}
echo $page . '<br>'; // shows 2
$nextpage = $page + 1; //shows 3
echo $nextpage;
?>
<ul class="pagination">
<?php if($page > 1) { ?>
<li><a href="<?= $pagination_url .= $page - 1; ?>">«</a>
</li>
<?php } ?>
<li class="active"><a href="#"><?= $page ?></a>
</li>
<?php if($page < $max_pages) { echo $nextpage; // shows 3?>
<li><a href="<?= $pagination_url .= $nextpage; // shows 13 ?>">»</a>
</li>
<?php } ?>
我的网站上还有一些过滤网址代码:
<?php
// link filters
if(isset($_GET['cat'])) {
if(isset($_GET['cat']) && isset($_GET['sub'])) {
if($_GET['cat'] != "alles")
$result_products = $db->get_by_cat("products", $_GET['cat'], $_GET['sub'], $start_from, $products_per_page);
} else if (isset($_GET['cat'])) {
if($_GET['cat'] != "alles")
$result_products = $db->get_by_cat("products", $_GET['cat'], null, $start_from, $products_per_page);
}
}
if(isset($_POST['clearbrand'])) {
unset($_POST['brandfilter']);
unset($_POST['applybrand']);
}
$filtered_brands = null;
if(isset($_POST['brandfilter'])) $filtered_brands = $_POST['brandfilter'];
// form filters
if(isset($_POST['applybrand'])) {
if(isset($_GET['cat'])) {
$result_products = $db->get_by_checkbox("products", "brand", $_POST['brandfilter'], $_GET);
} else {
$result_products = $db->get_by_checkbox("products", "brand", $_POST['brandfilter']);
}
}
?>
那么,有谁知道为什么我的分页从2到13? 提前致谢
答案 0 :(得分:2)
你的问题在这里:
<?php if($page > 1) { ?>
<li><a href="<?= $pagination_url .= $page - 1; ?>">«</a></li>
<?php } ?>
<li class="active"><a href="#"><?= $page ?></a></li>
<?php if($page < $max_pages) { echo $nextpage; // shows 3?>
<li><a href="<?= $pagination_url .= $nextpage; // shows 13 ?>">»</a></li>
<?php } ?>
如果$page
大于1(位于第2页),则将$page - 1
添加到$pagination_url
,基本上将“1”添加到最后。
然后,在第二个if
语句中,如果$page
小于$max_pages
,您也添加$nextpage
(即3)到$pagination_url
,在之前添加的“1”之后添加“3”。因此,$pagination_url
现在最后会有“13”。
您需要将其更改为:
<?php if($page > 1) { ?>
<li><a href="<?= $pagination_url . ($page - 1); ?>">«</a></li>
<?php } ?>
<li class="active"><a href="#"><?= $page ?></a></li>
<?php if($page < $max_pages) { echo $nextpage; // shows 3?>
<li><a href="<?= $pagination_url . $nextpage; // shows 13 ?>">»</a></li>
<?php } ?>