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

2020-11-02 14:22:16 浏览数 (1)

本文实例讲述了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程序设计有所帮助。

0 人点赞