【问题标题】:CodeIgniter pagination with Active Record使用 Active Record 进行 CodeIgniter 分页
【发布时间】:2012-06-05 05:44:25
【问题描述】:

我认为每个人(主要是 CI 用户的初学者)在使用活动记录进行分页时都会遇到困难。

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

我的 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();

我的分页类属性:

$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 部分,我将非常高兴...

【问题讨论】:

    标签: php mysql codeigniter activerecord pagination


    【解决方案1】:

    我们可以通过几种方式来做这件事..!

    1. 您必须随身携带页码。 就像每次通话一样,您只需移至页码即可。

    该参数可以称为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】:

      查看您的 URL,第 4 段将包含偏移量。

      因此,您可以使用:

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

      【讨论】:

      • 请你运行这个:echo $this->db->last_query();
      • 主页:SELECT b.*, a.adCampaignTitle FROM ads a, sms b WHERE b.smsAd_ID=a.ad_ID LIMIT 0,20
      • 您好,我只是插入未将主表 ID 显示为 FK 的批处理记录。我刚刚修好了。现在一切似乎都很好!感谢您的帮助 !以后见:)
      猜你喜欢
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 2012-02-03
      • 2013-02-27
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      相关资源
      最近更新 更多