千家信息网

如何理解Codeigniter框架分页函数

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"如何理解Codeigniter框架分页函数",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何理解Codeigniter框架分页函数"吧!
千家信息网最后更新 2026年11月03日如何理解Codeigniter框架分页函数

本篇内容主要讲解"如何理解Codeigniter框架分页函数",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何理解Codeigniter框架分页函数"吧!

一般在数据分页的时候需要获取当前页的数据和总条数,一般人是在model中封装两个函数分别获取当前页的数据和数据总条数,业务逻辑类似,感觉有点冗余,可以封装在一起:

复制代码 代码如下:

/**
* 获取分页数据及总条数
* @param string @tablename 表名
* @param mixed $where 条件
* @param int $limit 每页条数
* @param int $offset 当前页
*/
public function get_page_data($tablename, $where, $limit, $offset, $order_by, $db)
{
if(empty($tablename))
{
return FALSE;
}

$dbhandle = empty($db) ? $this->db : $db;

if($where)
{
if(is_array($where))
{
$dbhandle->where($where);
}
else
{
$dbhandle->where($where, NULL, false);
}
}

$db = clone($dbhandle);
$total = $dbhandle->count_all_results($tablename);

if($limit)
{
$db->limit($limit);
}

if($offset)
{
$db->offset($offset);
}

if($order_by)
{
$db->order_by($order_by);
}

$data = $db->get($tablename)->result_array();

return array('total' => $total, 'data' => $data);
}

CI框架分页类使用心得

CI分页的url地址有四种方式
a) locahost/news/page/2 这个2表示第二页
b) localhost/news/page/20 这个20表示从第20条记录开始分页,即页面的第一条记录,是数据库中的第20条记录。
c) localhost/news?per_page=2 第二页
d) localhost/news?per_page=20 同b)

首先我们先看一下CI分页的参数:

复制代码 代码如下:

$config['base_url'] = $url;
/* 分页的基础 URL
如果你想用a、b的链接形式,则该url应该形式如/news/page/
如果链接是c、d的形式,则url应该如/news?
*/
$config['total_rows'] = $total;//记录总数,这个没什么好说的了,就是你从数据库取得记录总数
$config['per_page'] = $pagesize; //每页条数。额,这个也没什么好说的。。自己设定。默认为10好像。
$config['page_query_string'] = TRUE;
/*传参形式。开启true则会自动在你的url后面加上&per_page=3。(这个per_page是默认的查询字符,当然你也可以用$config['query_string_segment']来自己设定)
因此c、d中的形式一般是为localhost/news?&per_page=2不过都一样,没什么影响。get的per_page还是3
*/
$config['first_link'] = '首页'; // 第一页显示
$config['last_link'] = '末页'; // 最后一页显示
$config['next_link'] = '下一页 >'; // 下一页显示
$config['prev_link'] = '< 上一页'; // 上一页显示
$config['cur_tag_open'] = ' '; // 当前页开始样式
$config['cur_tag_close'] = '
';
/*当前页结束样式。这些你可以自己尝试一下。
比如说我想让当前页的分页数字样式好看一点,红色字体等。你就可以在current上加上css代码
*/
$config['num_links'] = 2;// 当前连接前后显示页码个数。意思就是说你当前页是第5页,那么你可以看到3、4、5、6、7页。
$config['uri_segment'] = 4;
/*这个是你在用a)、b)链接样式的时候,用来判断页页数。
比如localhost/news/page/3 这个uri_segment就要设定为3。localhost/news/title/page/3这个就要设定为4
*/
$config['use_page_numbers'] = TRUE;
/*这个就是a)、b)的差别了。开启了,page就会表示页数。false就会表示记录数
*/

刚开始在网上查资料的时候,有很多这种写法。

复制代码 代码如下:

$this->model->get_news($config['per_page'],$this->uri->segment(3));

其实这种写法就是针对b)这种连接形式的。这里的$this->uri->segment(3)就是取到page/20中的记录数20。$config['per_page']就是限制输出多少条。
有很大的局限性和误导性。我开始就是死都不知道为什么这么写。。后来才发现,手册才是最好的老师。

当我们把CI分页类的一些参数都配置好了之后,$this->pagination->initialize($config);//配置分页

复制代码 代码如下:


$page = $this->pagination->create_links(); //我们就得到了分页了

直接传递到视图页,即可。

至于怎么加载模型,怎么存取数据记录,怎么传递变量到视图,这里就不说了,看手册好了。

忘记说了,带查询参数的分页,我是这么做的。视图中将查询参数get提交到控制器的search方法。在search中,用$get = $this->input->get();去获取到查询参数。
然后加载model,用带查询参数和分页参数去读取记录,将结果显示到视图。。

另外还发现个小bug,比如/news/page/-1000这样的时候,下面的分页链接将会出现负值
发现system/libraries/Pagination.php代码如下

复制代码 代码如下:

if ($this->use_page_numbers AND $this->cur_page == 0)
{
$this->cur_page = $base_page;
}
//应为
if ($this->use_page_numbers AND $this->cur_page <= 0)
{
$this->cur_page = $base_page;
}

到此,相信大家对"如何理解Codeigniter框架分页函数"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

代码 数据 参数 就是 形式 查询 函数 框架 时候 样式 视图 链接 没什么 好说 内容 写法 总数 手册 数据库 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网科技企业 科技与互联网发展 齐家互联网科技 互联网科技视频 科技创新互联网企业 互联网金融和金融科技 互联网科技公司名称 人人互联网科技是培训 无锡溥仪互联网科技有限公司 银川新华互联网科技学校地址 剑昆互联网络科技有限公司临桂 互联网与医疗科技 工业互联网等科技实现智能化赋能 领航科技大厦互联网公司 互联网科技年终奖 互联网高科技行业有哪些企业 互联网科技企业商标注意事项 北京品多多互联网科技有限公司 颐高云石互联网科技 深圳市人人互联网科技有限公司 智网互联网科技 互联网科技公司电话 电子科技大学互联网 镁科技互联网资讯平台 开启互联网科技时代小说 新兴科技互联网创新大赛颁奖典礼 互联网科技大赛获奖感言 长沙渺峰互联网科技有限公司 武汉亿视互联网科技有限公司
0