简易的分页方法(鄙人私自集成到了ZF的AbstractActionController.php中)

 /**
     * @todo 分页
     * @param $count 总条数
     * @param $pagesize 每页显示条数
     * @param $nowpagenum 当前页码
     * @return String HTML 
     * @example
     * $count = 45; //数据库查询到的数据总数
       $pagesize = 10; //每页展示的条数
       $nowpagenum = isset($_REQUEST['page']) ? $_REQUEST['page'] : 1 ; //获取当前的页码,默认没有的时候为1
       $page =  $this->PageNum($count, $pagesize ,$nowpagenum);
     * 
     */
    public function PageNum($count , $pagesize ,$nowpagenum){
        //计算页码
        $pagenum = ceil(($count/$pagesize));
        /***设定当前页在第一页当时无GET页码时默认为1***/
        $nowpagenum = empty($nowpagenum) ? 1 : $nowpagenum;
        /*****解析URL******/
        $url = $_SERVER['REQUEST_URI'];
        $urlArr = explode('?', $url);
        if(count($urlArr)==1){
            $newurl = $url.'?page=';
        }else{
            $params = array();
            $newurl = '';
            $newParams = array();
            $paramsArr = explode('&', $urlArr[1]);
            if(count($paramsArr)==1){
                $getParams = explode('=', $paramsArr[0]);
                $params[$getParams[0]] = $getParams[1];
                $newurl = $urlArr[0].'?page=';
            }else{
                for($j=0;$j<count($paramsArr);$j++){
                    $getParams = explode('=', $paramsArr[$j]);
                    $params[$getParams[0]] = $getParams[1];
                }
                if(isset($params['page'])){
                    unset($params['page']);
                    foreach($params as $key=>$value){
                        $newParams[] = $key.'='.$value;
                    }
                    $newurl = $urlArr[0].'?'.implode('&', $newParams).'&page=';
                }else{
                    foreach($params as $key=>$value){
                        $newParams[] = $key.'='.$value;
                    }
                    $newurl = $urlArr[0].'?'.implode('&', $newParams).'&page=';
                }
            }
        }
        /****拼装页码显示HTML代码****/
        $html='';
        if(isset($count) && isset($pagesize)){
            //one page 
            if($count <= $pagesize){
                $html = '<span>上一页</span><span>1</span><span>下一页</span>';
            //no record
            }else if($count == 0){
                $html = '暂未记录!';
            //大于一页小于等于6页
            }else if($count > $pagesize && $pagenum <= 6){
                if($nowpagenum==1){
                    $html .= '<span>上一页</span>'; 
                }else{
                    $html .= '<span><a href="'.$newurl.''.($nowpagenum-1).'">上一页</a></span>'; 
                }
                for($i=1;$i<=$pagenum;$i++){
                    if($i==$nowpagenum){
                        $html .= '<span>'.$i.'</span>';
                    }else{
                        $html .= '<span><a href="'.$newurl.''.$i.'">'.$i.'</a></span>';
                    }
                }
                if($nowpagenum==$pagenum){
                    $html .= '<span>下一页</span>'; 
                }else{
                    $html .= '<span><a href="'.$newurl.''.($nowpagenum+1).'">下一页</a></span>'; 
                }
            }else{
                if($nowpagenum==1){
                    $html .= '<span>上一页</span>'; 
                }else{
                    $html .= '<span><a href="'.$newurl.''.($nowpagenum-1).'">上一页</a></span>'; 
                }
                if(($pagenum-$nowpagenum)>5){
                    if($nowpagenum<=3){
                        for($i=1;$i<=3;$i++){
                            if($i==$nowpagenum){
                                $html .= '<span>'.$i.'</span>';
                            }else{
                                $html .= '<span><a href="'.$newurl.''.$i.'">'.$i.'</a></span>';
                            }
                        }
                    }else{
                        for($i=$nowpagenum-2;$i<=$nowpagenum;$i++){
                            if($i==$nowpagenum){
                                $html .= '<span>'.$i.'</span>';
                            }else{
                                $html .= '<span><a href="'.$newurl.''.$i.'">'.$i.'</a></span>';
                            }
                        }
                    }
                    $html .= '<span>...</span>';
                    for($j=$pagenum-2;$j<=$pagenum;$j++){
                        if($j==$nowpagenum){
                            $html .= '<span>'.$j.'</span>';
                        }else{
                            $html .= '<span><a href="'.$newurl.''.$j.'">'.$j.'</a></span>';
                        }
                    }
                }else{
                    for($i=$pagenum-5;$i<=$pagenum;$i++){
                        if($i==$nowpagenum){
                            $html .= '<span>'.$i.'</span>';
                        }else{
                            $html .= '<span><a href="'.$newurl.''.$i.'">'.$i.'</a></span>';
                        }
                    }
                }
                if($nowpagenum==$pagenum){
                    $html .= '<span>下一页</span>'; 
                }else{
                    $html .= '<span><a href="'.$newurl.''.($nowpagenum+1).'">下一页</a></span>'; 
                }
            }
        }
        return $html;
    }


大家可以自己去完善下。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值