CodeIgniter与Active Record分页

时间:2012-05-30 23:18:50

标签: php mysql codeigniter activerecord pagination

我认为每个人(主要是CI用户的初学者)在使用积极记录时遇到分页困难。

在CI的官方文档中,没有明确的声明解释如何在活动记录中使用分页类对象。我的问题是;无法定义当前页面并将其设置为SQL语句。因此,当程序通过分页从MySQL获取数据时,所有页面首先导航0和$config['per_page'];。我的意思是如果我设置为per_page=20,所有页面链接的提取MySQL行的20个。

我的SQL语句是:

$this->db->query("SELECT b.*, a.adCampaignTitle FROM ads a, sms b WHERE b.`smsAd_ID`=a.ad_ID LIMIT " . $config['per_page'])->result();

My Pagination Class属性:

$this->load->database();
$config['base_url'] = 'http://localhost/index.php/admin/index/page/';
$config['total_rows'] = $this->db->count_all('sms');
$config['per_page'] = 2;
$this->pagination->initialize($config);

如果有人帮助我如何初始化并将当前页面设置为SQL部分,我将非常高兴...

2 个答案:

答案 0 :(得分:1)

查看您的网址,第4段将包含偏移。

因此,您可以使用:

$offset = $this->uri->segment(4, 0);

$this->db->query("SELECT ... LIMIT {$offset}, {$config['per_page']}");

答案 1 :(得分:1)

我们可以通过几种方式做到这一点..!

  1. 您必须拥有页码。 像每次通话一样,您只需移动到页码。
  2. 该参数可以称为page_number

    所以你的网址看起来像http://server.com/index.php/controller/function?page_number=2

    因此,您只需将($this->input->get('page_number') * $config['per_page'])变为偏移量,然后限制为$config['per_page']

    1. 使用相同的计算,您可以在视图文件中执行并将其传递给urlpost parameter,例如limit=1&offset=2 ..!
    2. 我不会说这是最好的,但它是一个解决方案。

      你选择你想要的东西..!