加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

CI框架分页类用法是什么 详细实例是怎样

发布时间:2023-10-18 12:34:06 所属栏目:语言 来源:
导读:本篇内容介绍了“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框架分页类用法是什么,具体实例是怎样"的内容,大家可以关注的其它相关文章。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章