PHP - 分页计数不正确

时间:2017-06-28 19:09:00

标签: php pagination

所以我的网站上有一个简单的分页系统。但是我对下一页的计算存在问题。每当页面在第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; ?>">&laquo;</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 ?>">&raquo;</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? 提前致谢

1 个答案:

答案 0 :(得分:2)

你的问题在这里:

<?php if($page > 1) { ?>
    <li><a href="<?= $pagination_url .= $page - 1; ?>">&laquo;</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 ?>">&raquo;</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); ?>">&laquo;</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 ?>">&raquo;</a></li>
<?php } ?>