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

视图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>
 
控制器 
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;

数据加载模型
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-08-09 04:03:51

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

后盾网-CI框架学习笔记

CI框架: 表单验证: 载入验证类 $this->load->library('form_validation'); 设置规则 $this->form_validation->set_rules('name值','规则'); 执行验证 $this->form_validation->run() 表单验证辅助函数: $this->load->helper('form'); 1. set_value('name') //重填数据 2. form_error('n

CI框架学习笔记4——Benchmark.php

我们回到Codeigniter.php上继续往下看,第一个引入的类文件是Benchmark.php,这个文件主要是提供基准测试,具体使用方法参考手册http://codeigniter.org.cn/user_guide/libraries/benchmark.html.建议小伙伴们都读一读手册,弄懂功能的使用后,再来分析代码,才会事半功倍.不多说了,下面进入正题. 测试类定义了一个数组变量public $marker = array(),他的目的主要是用来记录我们在文件中添加的测试点. pub

CI框架学习笔记

一.CI版本 开发版本3.1.2   下载地址:https://github.com/bcit-ci/CodeIgniter/archive/3.1.2.zip 二.开发步骤 1.解压文件到www/ci 目录下 2.创建数据库 myci  后建表 user CREATE TABLE `user` ( `id` int(5) NOT NULL AUTO_INCREMENT, `uname` varchar(20) DEFAULT NULL, `age` int(2) DEFAULT NULL, `

CI框架学习笔记3——Log.php

上一节说完了Common.php,然而跟代码打交道总是免不了日志记录,所以这一节我们说说Log.php文件. 先看看类里面的几个属性, protected $_log_path;  日志路径 protected $_file_permissions = 0644; 文件权限 protected $_threshold = 1;  日志的等级,用来判断出现的错误异常什么的是否需要记录 protected $_threshold_array = array(); protected $_date_f

SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序

确保上一节服务器程序运行没有问题,否则请仔细看上一节 新建一个Unity3D项目(我的Unity3D版本是4.2.0) 1,在Unity3D内新建一个文件夹命名 Plugin 将下载的 客户端: WebSocket4Net  客户端必备 http://websocket4net.codeplex.com/ WebSocket4Net.dll   这个DLL复制到 Unity3D里面刚才新建的 Plugin文件夹内(注意Unity不得使用中文) ----------- 查看Unity下面的状态面板

SuperSocket框架学习笔记2-构建SuperWebSocket服务器程序

SuperSocket框架学习笔记2-构建SuperWebSocket服务器程序 上一节简单介绍了 基本的SuperSocket服务器 这一节我们使用 SuperWebSocket构建一个 能与Unity3D通信的(Console控制台)服务器程序 嘎嘎 先下载   需要的  DLL类库 服务端: SuperSocket1.6.1 这个必备 http://www.supersocket.net/ SuperWebSocket 服务端必备 http://superwebsocket.codeple

windows下scrapy框架学习笔记—&#39;scrapy&#39; 不是内部或外部命令

最近几天在深入的学习scrapy框架,但是装完各种需要的基础包之后却发现scrapy命令在别的路径下都用不了,我一开始是把python安装在F:\Python路径下的,安装了scrapy后它默认都会安装在这个路径下,scrapy在路径F:\Python\Scripts路径下,我的scrapy命令只能在此路径下用,因此创建什么工程也都只能在此文件下. 想了一下它的工作原理:它在F:\Python\Scripts路径下,就会在Scripts文件下存在一个scrapy批处理文件,那么在DOS下想要命令

JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事.当然,在学校里考试之前当然要把所有内容学一遍和复习一遍.但是,到了社会里做事,很多时候都是边做边学.应聘如此,工作如此,很多的挑战都是如此.没办法,硬着头皮上吧. 3.5 线程的分组管理 在实际的开发过程当中,可能会有多个线程同时存在,这对批量处理有了需求.这就有点像用迅雷下载电视剧,假设你在同时

JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue

前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的文章,大多都是以罗列记忆点的形式书写的,没有谈论实现细节和逻辑原理.作为个人笔记无可厚非,但是并不利于他人学习.希望能通过这种比较“费劲”的讲解,帮助我自己.也帮助读者们更好地学习Java.掌握Java. 无论你跟我一样需要应聘,还是说在校学生学习Java基础,都对入门和进一步启发学习有所帮助.(关