前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CI框架简单分页类用法示例

CI框架简单分页类用法示例

作者头像
砸漏
发布2020-11-02 14:22:16
5900
发布2020-11-02 14:22:16
举报
文章被收录于专栏:恩蓝脚本

本文实例讲述了CI框架简单分页类用法。分享给大家供大家参考,具体如下:

代码语言:javascript
复制
/** 
* 
* 关于 页码有效性的判断需要加在 控制器中判断,即当页码数<1或者 总页数 
* 
*/ 
class Custom_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= ' <strong '; 
var $cur_tag_close= '</strong '; 
var $next_tag_open= ' '; 
var $next_tag_close= ' '; 
var $prev_tag_open= ' '; 
var $prev_tag_close= ''; 
var $num_tag_open= ' '; 
var $num_tag_close= ''; 
public function __construct($params = array()) 
{ 
if (count($params)   0) 
{ 
$this- init($params); 
} 
} 
function init($params = array()) //初始化数据 
{ 
if (count($params)   0) 
{ 
foreach ($params as $key =  $val) 
{ 
if (isset($this- $key)) 
{ 
$this- $key = $val; 
} 
} 
} 
} 
function create_links() 
{ 
/////////////////////////////////////////////////////// 
//准备数据 
/////////////////////////////////////////////////////// 
$page_url = $this- page_url; 
$rows_num = $this- rows_num; 
$page_size = $this- page_size; 
$links_num = $this- links_num; 
if ($rows_num == 0 OR $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.'<a '.$anchor_class.' href="'.site_url($page_url).'" rel="external nofollow"  首页</a '.$this- first_tag_close; 
} 
//上一页 
if($page_num   1) 
{ 
$n = $page_num - 1; 
$output .= $this- prev_tag_open.'<a '.$anchor_class.' href="'.site_url($page_url.'/'.$n).'" rel="external nofollow" rel="external nofollow"  上一页</a '.$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) 
{  //current page 
$output .= $this- cur_tag_open.'<span '.$current_class.'  '.$i.'</span '.$this- cur_tag_close; 
}else if($i  = $pl && $i <= $pr) 
{ 
$output .= $this- num_tag_open.'<a '.$anchor_class.' href="'.site_url($page_url.'/'.$i).'" rel="external nofollow"  '.$i.'</a '.$this- num_tag_close; 
} 
} 
//下一页 
if($page_num < $pages) 
{ 
$n = $page_num + 1; 
$output .= $this- next_tag_open.'<a '.$anchor_class.' href="'.site_url($page_url.'/'.$n).'" rel="external nofollow" rel="external nofollow"  下一页</a '.$this- next_tag_close; 
} 
//末页 
if($page_num < $pages) 
{ 
$output .= $this- last_tag_open.'<a '.$anchor_class.' href="'.site_url($page_url.'/'.$pages).'" rel="external nofollow"  末页</a '.$this- last_tag_close; 
} 
$output.=$this- full_tag_close; 
return $output; 
} 
} 

控制器里调用

代码语言:javascript
复制
$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(); 
代码语言:javascript
复制
<?php 
class page{ 
public $page; //当前页 
public $pagenum; // 页数 
public $pagesize; // 每页显示条数 
public function __construct($count, $pagesize){ 
$this- pagenum = ceil($count/$pagesize); 
$this- pagesize = $pagesize; 
$this- page =(isset($_GET['p'])&&$_GET['p'] 0) ? intval($_GET['p']) : 1; 
} 
/** 
* 获得 url 后面GET传递的参数 
*/  
public function getUrl(){   
$url = 'index.php?'.http_build_query($_GET); 
$url = preg_replace('/[?,&]p=(\w)+/','',$url); 
$url .= (strpos($url,"?") === false) ? '?' : '&'; 
return $url; 
} 
/** 
* 获得分页HTML 
*/ 
public function getPage(){ 
$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 = "<a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=1"." 首页</a  "; 
} 
if($this- page!=1){ 
$pagestr.= "<a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=".($this- page-1)." 上一页</a "; 
} 
for($i=$start;$i<=$end;$i++){ 
$pagestr.= "<a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=".$i." ".$i."</a  ";            
} 
if($this- page!=$this- pagenum){ 
$pagestr.="<a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=".($this- page+1)." 下一页</a "; 
} 
if($this- page+5<$this- pagenum){ 
$pagestr.="<a href=".$url." rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" p=".$this- pagenum." 尾页</a  "; 
} 
return $pagestr;   
} 
} 
// 测试代码 
$page = new page(100,10); 
$str=$page- getPage(); 
echo $str; 
? 

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档