thinkphp 分页(数组分页)

有的时候需要用自己写分页,比如用了递归之后,变成数组了,到页面上面需要分页

下面我把注释写清楚直接用就行,第一个index方法是用于展示页面的,page_array是用来分页的,show_array是用来显示页码的。

public function index()
{
$page=input('page');//获取页面传过来的,get请求

global $countpage; #定全局变量    
$url='index';//url根据自己的地址定义
$count=6;//这个是每页显示多少条

$cate=new AuthRulemodel();
$datasort=$cate->tree();//这两行是我自己定义的模型,并递归排序了。具体例子,具体写。
$all=$this->page_array($count,$page,$datasort,0);//这里是调用分页的函数
$this->assign('datasort',$all);//分配到模板

$totals=count($datasort);  //查询数组长度   
$countpage=ceil($totals/6); #计算总页面数   
$show=$this->show_array($countpage,$url);//运行页码函数
$this->assign('show',$show);
}


/**  
 * 数组分页函数  核心函数  array_slice  
 * 用此函数之前要先将数据库里面的所有数据按一定的顺序查询出来存入数组中  
 * $count   每页多少条数据  
 * $page   当前第几页  
 * $array   查询出来的所有数组  
 * order 0 - 不变     1- 反序  
*/      

function page_array($count,$page,$array,$order){    

    $page=(empty($page))?'1':$page; #判断当前页面是否为空 如果为空就表示为第一页面     
       $start=($page-1)*$count; #计算每次分页的开始位置    
    if($order==1){    
      $array=array_reverse($array);    
    }         
    $pagedata=array();    
    $pagedata=array_slice($array,$start,$count);    //分隔数组
    return $pagedata;  #返回查询数据    
}    
/**  
 * 分页及显示函数  
 * $countpage 全局变量,照写  
 * $url 当前url  
 */    
function show_array($countpage,$url){   
     $page=empty($_GET['page'])?1:$_GET['page'];    
     if($page > 1){    
        $uppage=$page-1;    

     }else{    
        $uppage=1;    
     }    

     if($page < $countpage){    
        $nextpage=$page+1;    

     }else{    
            $nextpage=$countpage;    
     }    

    $str='<div style="border:1px; width:300px; height:30px; color:#9999CC">';    
    $str.="<span>共  {$countpage}  页 / 第 {$page} 页</span>";    
    $str.="<span><a href='$url?page=1'>   首页  </a></span>";    
    $str.="<span><a href='$url?page={$uppage}'> 上一页  </a></span>";    
    $str.="<span><a href='$url?page={$nextpage}'>下一页  </a></span>";    
    $str.="<span><a href='$url?page={$countpage}'>尾页  </a></span>";    
    $str.='</div>';    
    return $str;    
}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两个人的幸福online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值