2014-10-02 107 views
0

我有這個算法,我爲分頁製作。如何限制分頁頁數 - PHP

$array變量是從查詢設置頁碼和限制已設置後的結果。這是PDO :: fetchAll()函數的結果。

$array["totalCount"]包含表中的所有行,不僅集,但所有的行數。

我想要的是限制顯示的頁面數量,並使它像Google風格分頁一樣,我在網上搜索了很多類似的問題,但是讓我難以想象的是猜測如何在其中實現它我的算法與其他算法有很大不同。

在此先感謝。

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

回答

3

如果你願意,你可以嘗試顯示它作爲「下一個」和「下一頁」按鈕之間一個下拉..它會更容易顯示所有的頁碼..

或者你可以先得到當前頁面的價值,加上5並將其存儲爲「$添加」,然後減去5,並將其存儲爲「$減」,然後在頁面按鈕插入此:

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

這將隱藏超過5和小於5當前頁面

按鈕「爲」這一取代尤爾:

$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 
    } 
+0

我要去嘗試,還是有點困惑。 – JuanBonnett 2014-10-02 01:31:29

+0

你如何獲得當前頁面變量? – 2014-10-02 01:34:53

+0

$ params [「set」]是當前頁面的變量。功能外由GET – JuanBonnett 2014-10-02 01:35:37