CI框架简单分页类用法示例
本文实例讲述了CI框架简单分页类用法。分享给大家供大家参考,具体如下:
/**
*
*关于页码有效性的判断需要加在控制器中判断,即当页码数<1或者>总页数
*
*/
classCustom_pagination
{
var$page_url='';//分页目标URL
var$page_size=10;//每一页行数
var$page_num=1;//页码
var$rows_num='';//数据总行数
var$links_num=3;//选中链接前后的链接数,必须大于等于1
var$anchor_class='';//链接样式类
var$current_class='';//当前页样式类
var$full_tag_open='';//分页开始标签
var$full_tag_close='';//分页结束标签
var$info_tag_open='';
var$info_tag_close='';
var$first_tag_open='';
var$first_tag_close='';
var$last_tag_open='';
var$last_tag_close='';
var$cur_tag_open='';
var$cur_tag_close='';
var$next_tag_open='';
var$next_tag_close='';
var$prev_tag_open='';
var$prev_tag_close='';
var$num_tag_open='';
var$num_tag_close='';
publicfunction__construct($params=array())
{
if(count($params)>0)
{
$this->init($params);
}
}
functioninit($params=array())//初始化数据
{
if(count($params)>0)
{
foreach($paramsas$key=>$val)
{
if(isset($this->$key))
{
$this->$key=$val;
}
}
}
}
functioncreate_links()
{
///////////////////////////////////////////////////////
//准备数据
///////////////////////////////////////////////////////
$page_url=$this->page_url;
$rows_num=$this->rows_num;
$page_size=$this->page_size;
$links_num=$this->links_num;
if($rows_num==0OR$page_size==0)
{
return'';
}
$pages=intval($rows_num/$page_size);
if($rows_num%$page_size)
{
//有余数pages+1
$pages++;
};
$page_num=$this->page_num<1?'1':$this->page_num;
$anchor_class='';
if($this->anchor_class!=='')
{
$anchor_class='class="'.$this->anchor_class.'"';
}
$current_class='';
if($this->current_class!=='')
{
$current_class='class="'.$this->current_class.'"';
}
if($pages==1)
{
return'';
}
if($links_num<0)
{
return'--!links_num必须大于等于0';
}
////////////////////////////////////////////////////////
//创建链接开始
////////////////////////////////////////////////////////
$output=$this->full_tag_open;
$output.=$this->info_tag_open.'共'.$rows_num.'条数据第'.$page_num.'/'.$pages.'页'.$this->info_tag_close;
//首页
if($page_num>1)
{
$output.=$this->first_tag_open.'首页'.$this->first_tag_close;
}
//上一页
if($page_num>1)
{
$n=$page_num-1;
$output.=$this->prev_tag_open.'上一页'.$this->prev_tag_close;
}
//pages
for($i=1;$i<=$pages;$i++)
{
$pl=$page_num-$links_num<0?0:$page_num-$links_num;
$pr=$page_num+$links_num>$pages?$pages:$page_num+$links_num;
//判断链接个数是否太少,举例,假设links_num=2,则链接个数不可少于5个,主要是当page_num等于1,2和n,n-1的时候
if($pr<2*$links_num+1)
{
$pr=2*$links_num+1;
}
if($pl>$pages-2*$links_num)
{
$pl=$pages-2*$links_num;
}
if($i==$page_num)
{//currentpage
$output.=$this->cur_tag_open.''.$i.''.$this->cur_tag_close;
}elseif($i>=$pl&&$i<=$pr)
{
$output.=$this->num_tag_open.''.$i.''.$this->num_tag_close;
}
}
//下一页
if($page_num<$pages)
{
$n=$page_num+1;
$output.=$this->next_tag_open.'下一页'.$this->next_tag_close;
}
//末页
if($page_num<$pages)
{
$output.=$this->last_tag_open.'末页'.$this->last_tag_close;
}
$output.=$this->full_tag_close;
return$output;
}
}
控制器里调用
$config['page_url']
='about/science';
$config['page_size']=$pagesize;
$config['rows_num']=$num_rows;
$config['page_num']=$page;
$this->load->library('Custom_pagination');
$this->custom_pagination->init($config);
echo$this->custom_pagination->create_links();
pagenum=ceil($count/$pagesize);
$this->pagesize=$pagesize;
$this->page=(isset($_GET['p'])&&$_GET['p']>0)?intval($_GET['p']):1;
}
/**
*获得url后面GET传递的参数
*/
publicfunctiongetUrl(){
$url='index.php?'.http_build_query($_GET);
$url=preg_replace('/[?,&]p=(\w)+/','',$url);
$url.=(strpos($url,"?")===false)?'?':'&';
return$url;
}
/**
*获得分页HTML
*/
publicfunctiongetPage(){
$url=$this->getUrl();
$start=$this->page-5;
$start=$start>0?$start:1;
$end=$start+9;
$end=$end<$this->pagenum?$end:$this->pagenum;
$pagestr='';
if($this->page>5){
$pagestr="首页";
}
if($this->page!=1){
$pagestr.="page-1).">上一页";
}
for($i=$start;$i<=$end;$i++){
$pagestr.="".$i."";
}
if($this->page!=$this->pagenum){
$pagestr.="page+1).">下一页";
}
if($this->page+5<$this->pagenum){
$pagestr.="pagenum.">尾页";
}
return$pagestr;
}
}
//测试代码
$page=newpage(100,10);
$str=$page->getPage();
echo$str;
?>
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《ZendFrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。