CodeIgniter CI分页类的使用

一、controllers文件

function index ()
    {        
      
            $config['base_url']=site_url('accounts/index');
            $config['total_rows']=100;//数据总条数
            $config['per_page']=5;//每页显示条数
            $config['uri_segment']=3;//设置URI 的哪个部分包含页数
            $config['num_links']=2;//当前页码的前面和后面的“数字”链接的数量
            $config['use_page_numbers']=TRUE;//默认分页URL中是显示每页记录数,启用use_page_numbers后显示的是当前页码
            $config['full_tag_open'] = '<ul class="controls-buttons">';//把打开的标签放在所有结果的左侧。
            $config['full_tag_close'] = '</ul>';//把关闭的标签放在所有结果的右侧。
            $config['first_link'] = 'First';//你希望在分页的左边显示“第一页”链接的名字。如果你不希望显示,可以把它的值设为 FALSE
            $config['first_tag_open'] = '<li>';//“第一页”链接的打开标签。
            $config['first_tag_close'] = '</li>';//“第一页”链接的关闭标签。
            $config['last_link'] = 'Last';//你希望在分页的右边显示“最后一页”链接的名字。如果你不希望显示,可以把它的值设为 FALSE 。
            $config['last_tag_open'] = '<li>';//“最后一页”链接的打开标签。
            $config['last_tag_close'] = '</li>';//“最后一页”链接的关闭标签。
            $config['prev_link'] = '&lt;';//你希望在分页中显示“上一页”链接的名字。如果你不希望显示,可以把它的值设为 FALSE 。
            $config['prev_tag_open'] = '<li>';//“上一页”链接的打开标签 。
            $config['prev_tag_close'] = '</li>';//“上一页”链接的关闭标签 。
            $config['next_link'] = '&gt;';//你希望在分页中显示“下一页”链接的名字。如果你不希望显示,可以把它的值设为 FALSE 。
            $config['next_tag_open'] = '<li>';//“下一页”链接的打开标签 。
            $config['next_tag_close'] = '</li>';//“下一页”链接的关闭标签 。
            $config['num_tag_open'] = '<li>';//“数字”链接的打开标签。
            $config['num_tag_close'] = '</li>';//“数字”链接的关闭标签。
            $config['cur_tag_open'] = '<li><a class="current"><b>';//“当前”链接的打开标签。
            $config['cur_tag_close'] = '</b></a></li>';//“当前”链接的关闭标签。
            $this->pagination->initialize($config);//以上参数被 $this->pagination->initialize 方法传递
            $data['pagination']=$this->pagination->create_links();//创建分页变量给$pagination
           
            $arr['num']=$config['per_page'];
            $arr['offset']=$this->uri->segment(3)!==FALSE?$this->uri->segment(3):0;

            $data['accounts'] = $this->Accounts_model->getAccounts($arr);//获取数据

           // Load data variables separately so all views being loaded receive them
            $this->load->vars($data);
          
           // Load template view
            $this->load->view('assets_template');
           
          
    }

二、models文件
function getAccounts($arr=array('num'=>FALSE,'offset'=>FALSE))
    {
        //分页限制
        $limit='';
        if(isset($arr['num']) and isset($arr['offset']) and $arr['num']!==FALSE and $arr['offset']!==FALSE ){
          $limit=" LIMIT {$arr['offset']},{$arr['num']}";
        }
        $query = $this->db->query("select * from tablebname $limit");

        $accounts = array();

        foreach ($query->result() as $row) {
            $accounts[] = $row;
        }
        return $accounts;
    
    }

三、views文件

显示分页
<?php echo $pagination; ?>

<?php if (isset($accounts)): foreach ($accounts as $key => $a): ?>
                            <tr>
                            <td class="th table-check-cell"><input type="checkbox" name="contacts_id[]" id="table-selected-<?php echo $key+1; ?>" value="<?php echo $a->id; ?>"></td>                            
                            <td><?php echo anchor('contacts/view/'.$a->id, $a->name);?></td>
                            <td><?php if($a->template_id){ ?><a href="#<?php echo $a->template_id; ?>"><?php echo $a->template_name; ?></a><?php }else{ ?>默认模板<?php } ?></td>
                            <td><?php foreach($a->group as $k=>$v){ ?>
                                <a href="#"><?php echo $v->name; ?></a>
                                <?php }?>
                            </td>
                            <td class="table-actions">
                                <a href="#" title="Edit" class="with-tip"><img src="<?php echo base_url(); ?>images/icons/fugue/pencil.png" width="16" height="16"></a>
                                <a href="#" title="Delete" class="with-tip"><img src="<?php echo base_url(); ?>images/icons/fugue/cross-circle.png" width="16" height="16"></a>
                            </td>
                            </tr>
                            <?php endforeach; endif; ?>

php轻量级框架CodeIgniter介绍

CodeIgniter是一套给PHP网站开发者使用的应用程序开发框架和工具包。

关于CodeIgniter
  CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包。它提供一套丰富的标准库以及简单的接口和逻辑结构,其目的是使开发人员更快速地进行项目开发。使用 CodeIgniter 可以减少代码的编写量,并将你的精力投入到项目的创造性开发上。
  CodeIgniter是由Ellislab公司的CEORickEllis开发的。其核心框架是为这个程序特别编写的,而其他很多类库、辅助函数和子系统则来自于RickEllis和PaulBurdick编写的内容管理系统ExpressionEngine。来自RubyonRails的灵感启发我们创造了一个PHP框架,并且将框架的概念引入到网络社区的一般意识中。
  她是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,她可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个与人共享主机并且为客户要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架,那么 CodeIgniter 就是你所需要的,如果…
  * 你想要一个小巧的框架。
  * 你需要出色的性能。
  * 你需要广泛兼容标准主机上的各种 PHP 版本和配置(例如 PHP4)。
  * 你想要一个几乎只需 0 配置的框架。
  * 你想要一个不需使用命令行的框架。
  * 你想要一个不需坚守限制性编码规则的框架。
  * 你对 PEAR 这种大规模集成类库不感兴趣。
  * 你不希望被迫学习一门模板语言(虽然可以选择你要求的模板解析器)。
  * 你不喜欢复杂,热爱简单。
  * 你需要清晰、完整的文档。
CodeIgniter特性
  开发框架优秀与否与它有多少特性没有太大的关系。你从特性中不能推断出用户的体验、不能体验到框架设计是不是直接了当,是不是智能。特性也不能告诉你框架代码的质量如何、性能如何、细节处理的如何、安全性如何。判断一个框架的唯一办法是在使用中了解它。安装CodeIgniter很简单,所以,请你使用它。CodeIgniter的主要特性如下:
  *基于MVC体系
  *兼容PHP4
  *超轻量级
  *对数种数据库平台的全特性支持的数据库类
  *ActiveRecord支持
  *表单与数据验证
  *安全性与XSS过滤
  *Session管理
  *邮件发送类,支持附件,HTML或文本邮件,多协议(sendmail,SMTP和Mail)及更多。
  *图像处理类库(剪裁,缩放,旋转等)。支持GD,ImageMagick和BetPBM
  *文件上传类
  *FTP类
  *本地化
  *分页
  *数据加密
  *基准测试
  *全页面缓存
  *错误日志
  *应用程序评测
  *脚手架(Scaffolding)
  *日历类
  *User-Agent类
  *Zip编码类
  *模板引擎类
  *Trackback类
  *XML-RPC类库
  *单元测试类
  *“搜索引擎友好”的URL
  *灵活的URI路由
  *支持勾子,类扩展及插件
  *大量的辅助函数

应用程序流程图

下图说明数据流如何贯穿整个系统:

CodeIgniter 应用程序流程图

  1.     index.php 作为前端控制器,初始化运行 CodeIgniter 所需要的基本资源。
  2.     Router 检查 HTTP 请求,以确定谁来处理请求。
  3.     如果缓存(Cache)文件存在,它将绕过通常的系统执行顺序,被直接发送给浏览器。
  4.     安全(Security)。应用程序控制器(Application Controller)装载之前,HTTP 请求和任何用户提交的数据将被过滤。
  5.     控制器(Controller)装载模型、核心库、辅助函数,以及任何处理特定请求所需的其它资源。
  6.     最终视图(View)渲染发送到 Web 浏览器中的内容。如果开启缓存(Caching),视图首先被缓存,所以将可用于以后的请求。