[英]How to limit the number of pagination pages - PHP
我有我為分頁制作的算法。
$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;
}
您可以嘗試將其顯示為“下一步”和“上一步”按鈕之間的下拉菜單。.這樣會更容易顯示所有頁碼。
或者您可以先獲取當前頁面的值,將其加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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.