CI框架分页类的定义与使用方法是什么
导读:相信很多人对“CI框架分页类的定义与使用方法是什么”都不太了解,下面小编为你详细解释一下这个问题,希望对你有一定的帮助 本文实例讲述了CI框架简单分页类用法。分享给大家供大家参考,具体如下: /** * * 关于 页码有效性的...
相信很多人对“CI框架分页类的定义与使用方法是什么”都不太了解,下面小编为你详细解释一下这个问题,希望对你有一定的帮助
本文实例讲述了CI框架简单分页类用法。分享给大家供大家参考,具体如下:
/**
*
* 关于 页码有效性的判断需要加在 控制器中判断,即当页码数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;
}
}
控制器里调用
$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();
?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;
?>
以上就是关于“CI框架分页类的定义与使用方法是什么”的介绍了,感谢各位的阅读,希望文本对大家有所帮助。如果想要了解更多知识,欢迎关注网络,小编每天都会为大家更新不同的知识。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CI框架分页类的定义与使用方法是什么
本文地址: https://pptw.com/jishu/650884.html
