2012-10-04 63 views
0

我有codeigniter applicatin,它們的分頁代碼像魅力一樣工作。分頁允許訪問者選擇他希望每頁看到多少記錄。現在,我想添加以下內容:codeigniter中的自定義分頁

從總計Z記錄中顯示X到Y.

現在,Z很容易......我已經解決了。任何人都可以告訴我怎麼能實現這個?

這裏是我具備的功能:

public function displayAllUsers() 
    { 

     if ($this->uri->segment(3) !="") { 
     $limit = $this->uri->segment(3); 
     } else { 
     $limit = 10; 
     } 

     $offset = 4; 
     $offset = $this->uri->segment(4); 
     $this->db->limit($limit, $offset); 
     $data['users'] = $this->backOfficeUsersModel->get(); 
     $totalresults = $this->db->get('back_office_users')->num_rows(); 

     $this->session->set_userdata('totalresults', $totalresults); 

     //initializing & configuring paging 
     $this->load->library('pagination'); 
     $config['base_url'] = site_url('/backOfficeUsers/displayAllUsers/'.$limit.'/'); 
     $config['total_rows'] = $totalresults; 
     $config['per_page'] = $limit; 
     $config['uri_segment'] = 4; 
     $config['full_tag_open'] = '<div class="dataTables_paginate paging_bootstrap pagination"><ul>'; 
     $config['full_tag_close'] = '</ul></div>'; 
     $config['cur_tag_open'] = '<li><a href=# style="color:#ffffff; background-color:#258BB5;">'; 
     $config['cur_tag_close'] = '</a></li>'; 
     $config['num_tag_open'] = '<li>'; 
     $config['num_tag_close'] = '</li>'; 

     $this->pagination->initialize($config); 

     //....irelevant content..... 

    } // end of function displayAllUsers 

任何幫助將十分讚賞。

回答

1

它不應該那麼辛苦。事實上,如果你理解分頁,你可以如何獲得X和Y的價值。首先,X和Y之間的差值當然等於$limit-1。X的值應該等於變量$offset加1(偏移通常從0開始,不是1)。從那裏,我確信你明白Y等於$offset + $limit

$X = $offset + 1; 
$Y = $offset + $limit; 

在情況下,你在最後一頁,你要確保你有Y.正確的價值你需要檢查你從數據庫中抓取總行,如果它是小於每頁限制,然後將其更改爲像這樣的

if (fetched_rows < $limit) 
{ 
    $Y -= ($limit - fetched_rows); 
} 
+0

嗨凱末爾。我有12條記錄。我每頁顯示10條記錄。在第一頁上,使用上面的代碼我現在有:從總共12個顯示1到11。這是錯誤的。在下一頁中,它顯示:從12中顯示11到21任何想法如何解決這個問題? – Zoran

+0

@Zoran我的壞。我沒有想通過一切。我已經更新了我的答案。 –

+0

我將每頁數改爲4,所以我可以更好地看到我得到了什麼。更新代碼後,只有一個小問題有待解決:所以在頁面第一頁上顯示4條記錄,請閱讀:顯示1到5,總數爲12(應該是1到4?或不是?)下一頁閱讀此內容:從12中顯示5到9,最後一頁顯示爲:從12中顯示9到13這是錯誤的,我共有12條記錄。 – Zoran