【发布时间】: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; ?>">Último >>></a></li>
<?php
}
?>
</ul>
<?php
}
unset($array["totalCount"]);
return $array;
}
【问题讨论】:
标签: php pagination