2014-10-02 80 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