簡體   English   中英

codeigniter:分頁邏輯每頁顯示2個列表

[英]codeigniter: Pagination logic to show 2 lists per page

我的控制器中有一個分頁頁面,我對視圖中每頁列出2個數據感到困惑。 我正在使用的控制器代碼如下:

public function newsletter()
{
    $this->load->library('pagination');
    $config = array();

    $config["base_url"] = base_url() . "index.php/welcome/newsletter";
    $this->load->model('newsletter_model');
    $total_row = $this->newsletter_model->record_count();
    $config["total_rows"] = $total_row;
    $config["per_page"] = 2;  // per page 2 records
    $config['use_page_numbers'] = TRUE;
    $config['num_links'] = $total_row;
    $config['cur_tag_open'] = '&nbsp;<a class="current">';
    $config['cur_tag_close'] = '</a>';

    $config['page_query_string'] = FALSE;
    $config['next_link'] = 'Next';
    $config['prev_link'] = 'Previous';

    $this->pagination->initialize($config);
    if($this->uri->segment(3)){  
    $page = ($this->uri->segment(3)) ; 
    }
    else{ 
    $page = 1;
    } 
    $this->load->model('newsletter_model');
    $data["results"] = $this->newsletter_model->fetch_data($config["per_page"], $page); 
    $str_links = $this->pagination->create_links();
    $data["links"] = explode('&nbsp;',$str_links );

    $this->load->model('newsletter_model');
    $this->load->view('newsletter/newsletter',$data);
}

有了上面的代碼,我每頁可以獲得2條記錄,但是我無法理解分頁背后的邏輯。 誰能解釋我在代碼codeigniter pagination起作用的邏輯,因為我的工作本身對我來說很容易理解。

我的模型代碼如下:

  public function fetch_data($limit, $id)
   { 

    $this->db->select('*');
    $this->db->from('ins_newsletter');
    $this->db->order_by('nl_id', 'desc');
    $this->db->limit($limit,$id);
    $query = $this->db->get();

    return $query->result_array();

}
public function record_count() 
{
    return $this->db->count_all("ins_newsletter");
}

CI的Paginator類僅為您生成分頁鏈接。

“記錄分頁”邏輯在這里發生:

$this->db->limit($limit, $offset);

$limit是要獲取的記錄數$offset要返回的第一行偏移量

要獲取前兩個記錄,我們將設置$limit = 2, $offset = 0

CI可轉換為SQL,例如:

SELECT ...... FROM ins_newsletter LIMIT 0, 2;

要獲取記錄編號3和4,我們將設置$limit = 2, $offset = 2

CI可轉換為SQL,例如:

SELECT ...... FROM ins_newsletter LIMIT 2, 2;

編輯:

您的代碼中有一個小錯誤。

第1頁的偏移量應為0,第2頁的偏移量應為2,第3頁的偏移量應為4,第4頁的偏移量應為6,第5頁的偏移量應為8 ...依此類推。

public function fetch_data($limit, $page)
{
    $offset = ($page - 1) * $limit;
    ...
}

我建議您將第二個參數更改為$page而不是$id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM