如何限制分页页数 - PHP

时间:2014-10-02 01:11:02

标签: php pagination

我有这个用于分页的算法。

$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;
}

enter image description here

1 个答案:

答案 0 :(得分:3)

如果您愿意,可以尝试将其显示为“下一个”和“上一个”按钮之间的下拉列表...显示所有页码更容易..

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

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

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

用此替换yor'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
    }