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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。