【问题标题】:How to limit the number of pagination pages - PHP如何限制分页页数 - PHP
【发布时间】:2014-10-02 01:11:02
【问题描述】:

我有这个算法用于分页。

$array 变量是设置页码和限制后查询的结果集。这是 PDO::fetchAll() 函数的结果。

$array["totalCount"] 包含表中所有行的计数,不仅包含该集合,还包含所有行。

我想要的是限制显示的页面数量,让它有点像谷歌风格的分页,我在网上搜索了很多类似的问题,但让我挣扎的是猜测如何在我的算法与其他算法大不相同。

提前致谢。

public static function renderPaginationBar($obj, $params) {
    $array = $obj->getAll($params);
    $set = $params["set"];
    $perSet = $params["limit"];
    $pages = ceil((int)$array["totalCount"] / (int)$perSet);

    if($pages > 1 && $set <= $pages) {
        $query = preg_replace('/set=\d*/i', '', http_build_query($_GET));
        ?>
        <ul class="pagination">
        <?php
        if($set > 1) {
            ?>
            <li><a href="?<?php echo $query; ?>&set=1"><<< Inicio</a></li>
            <li><a href="?<?php echo $query; ?>&set=<?php echo ((int)$set - 1) ?>"><<</a></li>
            <?php
        }

        for($i = 1; $i <= $pages; $i++) {
            $class = $set == $i ? "active" : "";
            ?>
            <li class="<?php echo $class; ?>"><a href="?<?php echo $query; ?>&set=<?php echo $i.""; ?>"><?php echo $i; ?></a></li>
            <?php
        }

        if($set < $pages) {
            ?>
            <li><a href="?<?php echo $query; ?>&set=<?php echo ((int)$set + 1); ?>">>></a></li>
            <li><a href="?<?php echo $query; ?>&set=<?php echo $pages; ?>">&Uacute;ltimo >>></a></li>
            <?php
        }
        ?>
       </ul>
       <?php
    }
    unset($array["totalCount"]);
    return $array;
}

【问题讨论】:

    标签: php pagination


    【解决方案1】:

    如果需要,您可以尝试将其显示为“下一个”和“上一个”按钮之间的下拉菜单。显示所有页码会更容易。

    或者您可以先获取当前页面的值,加 5 并将其存储为“$add”,减 5 并将其存储为“$minus”,然后将其插入页面按钮中:

    <input type="submit" value="<?php echo $page_num;?>" <?php if($pagenum > $add || $pagenum < $minus){ echo "style='display:none'";?>>
    

    会隐藏当前页面大于5小于5的按钮

    用这个替换你的'for':

        $get_add = $params["set"] + 5;
        $get_minus = $params["set"] - 5;
        for($i = 1; $i <= $pages; $i++) {
            $class = $set == $i ? "active" : "";
            ?>
            <li class="<?php echo $class; ?>" <?php if($i > $get_add || $i < $get_minus){ echo "style='display:none;position:absolute'";?>><a href="?<?php echo $query; ?>&set=<?php echo $i.""; ?>"><?php echo $i; ?></a></li>
            <?php
        }
    

    【讨论】:

    • 我去试试,还是有点糊涂。
    • 如何获取当前页面变量?
    • $params["set"] 是当前页面的变量。函数外由GET设置
    • 嗯.. 这是一个非常有趣的答案。它呈现但隐藏了您不想显示的页面。我想这就是我一直在寻找的。可能是,通过一些额外的逻辑,我可以让它不隐藏页面,但根本不渲染它们。好工作。非常感谢。
    • 哦,你说得对,我真傻..如果你可以把它留空,为什么要隐藏它:DDDD
    猜你喜欢
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多