php CI框架学习笔记-分页实现程序

举个按关键词搜索结果分页的例子,
1.视图HTML

 代码如下 复制代码

<div id="body">
<form action="/index.php/search/index/" method="get">
<p>请输入书名、作者、出版社中的一个或多个来查询。</p>
<p><input type="text" name="s" value="" size="64" /> <input type="submit" value="搜索" /></p>
</form>
</div>

即表单提交到名叫search的controller和名叫index的方法, 其中包含了一些动态参数,不是纯列表,故相对比较复杂,后面会提到。

 代码如下 复制代码

public function index() {
$keyword = $this->input->get ( 's' );
$offset = $this->input->get ( 'offset' );

if (empty ( $offset )) {
$offset = 0;
}

if (! empty ( $keyword )) {
$this->load->model ( 'book_model' );
$this->load->library ( 'pagination' );

$per_page = 10;
$config ['num_links'] = 5;
$config ['base_url'] = '/index.php/' . $this->router->class . '/' . $this->router->method . '/?s=' . $keyword;
$config ['per_page'] = $per_page;
$config ['total_rows'] = $this->Book_Model->find_by_name ( $keyword, NULL, NULL, true );
$config ['page_query_string'] = false;
$config ['query_string_segment'] = 'offset'; //重新定义记录起始位置的参数名,默认为per_page

$this->pagination->initialize ( $config );
$data ['books'] = $this->Book_Model->find_by_name ( $keyword, $per_page, $offset );
$this->load->view ( 'search', $data );
} else {
$this->load->view ( 'search' );
}
}

因为config.php中默认的enable_query_strings是false, 起始位置始终在最后,这样出来的结果类似/index.php/search/index/?s=中国/10,页码取不到,需要将此配置改为false;

3.模型

 

 代码如下 复制代码
public function find_by_name($name, $per_page=0, $offset = 0, $is_total = false) {
if ($is_total) {//总数
$query = $this->db->query ( "select count(id) as cnt from {$this->_book} where book_name like '%{$name}%'" );
if ($query->num_rows () > 0) {
$row = $query->row ();
$ret = $row->cnt;
}
}else{//列表
$query = $this->db->query ("select * from {$this->_book} where book_name like '%{$name}%' limit {$offset}, {$per_page}");
$ret = $query->result ();
}
return $ret;
}
时间: 2024-10-25 01:07:16

php CI框架学习笔记-分页实现程序的相关文章

CI框架学习笔记(二) -入口文件index.php_php实例

上一节(CI框架学习笔记(一) - 环境安装.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现. 1. 设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development可以是任何你喜欢的环境名称(比如dev,再如test),相对应的,你要在下面的switch case代码块中,对设定的环

CI框架学习笔记(一) - 环境安装、基本术语和框架流程_php实例

最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时刻提醒自己:借鉴和学习才有出路,忘记过去意味着背叛!基本术语说明 在本文开始之前,有必要对文中反复出现的术语做一个简单的说明,如果你对这一部分已经熟谙,完全可以略过.本文中反复出现和提及的术语包括: 前端控制器(Front Controller): 用于集中控制用户的所有请求的组件,将用户的请求发送

CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解_php技巧

CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而"优雅"的工具包,它可以为开发者们建立功能完善的 Web 应用程序.是比较主流的一个PHP框架. 下面给大家介绍CI框架(ajax分页,全选,反选,不选,批量删除)完整代码,具体代码如下所示: //ajax分页+搜索(视图层) function ajax_page(page){ var sou = $('#sou').val(); $.ajax({ type: "POST", dataTyp

CI框架内置分页代码

Controller 控制器代码 <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { /* CI 框架内置分页 */ public function __construct() { parent::__construct(); $this->load->library('pagination'); //系统的library $

Yaf框架学习笔记之源码笔记

  从了解PHP不久就想着用扩展的方式来实现PHP的程序框架,后来了解鸟哥已经实现了yaf简单的C实现PHP的MVC框架,故将其源代码研究了好几遍.yaf的优势是简单,高效,高性能,框架长驻内存,程序配置内存化,其实主要是运行速度比大部分PHP的框架都快. 1.在内核扩展中加载PHP用户空间类文件 文件:yaf_loader.c 函数:int yaf_loader_import( char path, int len int use_path TSRMLS_DC) 行号:333 2.自动加载器

Symbian学习笔记(3)——应用程序框架

开发symbian的GUI应用是有模板的,用Carbide C++的工程向导可以自动生成程序的基本框架.不过可能与安装的SDK版本有关,我现在只能生成一个AppUi一个Container的常规模板(以前用2nd FP3时还可以生成多个view多个container的视图模板). 不管是哪一种模板,它们共同的部分是入口函数.Application和Document.即以下三个文件是所有工程都具有的: 1)有一个与工程同名的cpp文件,它只提供了两个全局函数,是程序执行的入口,负责创造Applica

Symfony2框架学习笔记之表单用法详解_php实例

本文实例讲述了Symfony2框架表单用法.分享给大家供大家参考,具体如下: 对于一个Web开发者来说,处理HTML表单是一个最为普通又具挑战的任务.Symfony2集成了一个Form组件,让处理表单变的容易起来.在这一节里,我们将 从基础开始创建一个复杂的表单,学习表单类库中最重要的内容. Symfony2 的Form组件是一个独立的类库,你可以在Symfony2项目之外使用它. 创建一个简单的表单: 假设你要创建一个应用程序的todo列表,需要显示一些任务.因为你的用户需要编辑和创建任务,所

PHP框架CodeIgniter框架学习笔记

CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而"优雅"的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序.如果你是一个使用共享主机,并且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架 那么 CodeIgniter 就是你所需要的,如果- 你想要一个小巧的框架. 你需要出色的性能. 你需要广泛兼容标准主机上的各种 PHP 版本和配置. 你想要一个几乎只需 0 配置的框架. 你想要一个不需使用命令行的框架. 你想要一个不

ThinkPHP php 框架学习笔记_php技巧

花了两个多钟在看 ThinkPHP 框架,不想太过深入的知道它的所有高深理论.单纯想知道怎么可以用起来,可以快捷的搭建一个网站.所以是有选择的看,二个钟后还是一头雾水.于是决定改变学习策略,上官方论坛看其它高人写的民间教程,果然比官方的通俗易懂多了.http://bbs.thinkphp.cn/forumdisplay.php?fid=6 (官方论坛) ThinkPHP 有很多函数通过参数拼凑的方式来组合SQL,如下:$list = $test->findall('',$fields,'id d