有的时候需要用自己写分页,比如用了递归之后,变成数组了,到页面上面需要分页
下面我把注释写清楚直接用就行,第一个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;
}