您正在尋找在笨論壇採用漸進增強的代碼。這意味着代碼在沒有javascript的情況下也能正常工作(儘管刷新了頁面)。
因此,您的第一步是使您的分頁工作與javascript關閉,然後您將能夠添加AJAX功能。
現在,分頁工作的方式是在查詢中使用SQL的LIMIT
來限制每個查詢的結果。 LIMIT
需要2個值(偏移量和金額),如下所示:如果要每頁顯示2行,您將使用LIMIT 0, 2
查詢數據庫。這意味着「從第一行開始,共給我2行」。然後,對於下一頁,您使用LIMIT 2, 2
進行查詢,這意味着「從第三行開始(2是第三行 - 這是一個基於零的索引)並給我總共2行」。
您將在每個查詢中執行此操作,以便下一個查詢將具有LIMIT 4, 2
等等。正如你所看到的,從一個查詢到下一個查詢的唯一變化是偏移量(從哪個行開始查詢)。現在
,該笨分頁類的工作,方式是,它使得偏移的每一頁,它與$this->pagination->create_links()
生成的鏈接中。偏移量在哪裏?這是由$config['uri_segment']
確定的,但默認情況下它被設置爲3.由於您沒有提供完整的代碼,我不知道您的控制器被稱爲什麼。我們假設它叫做hotels
。所以,你必須設置$config['base_url'] = 'hotels/show';
。正如你所看到的,你的第一個URI段是hotels
,第二個是show
,第三個是分頁類爲你生成的偏移量。
你如何得到這個抵消?我很高興你問。通過簡單地讓show
方法接受一個參數,Codeigniter會將它傳遞給第三個URI段。因此,我們得到如下:
function show($offset = 0)
{
$this->load->library('pagination');
$config['base_url'] = 'hotels/show'; // Change this to your controller name
$config['total_rows'] = '200'; // In reality, this should be the actual number of rows in your table
$config['per_page'] = '2';
$this->pagination->initialize($config);
$data['pagination'] = $this->pagination->create_links();
$offset = (int) $offset; // just to make sure nothing funky gets in here
$data['query_select'] = $this->db->query("SELECT @rownum:[email protected]+1 rownum, t.* ".
"FROM (SELECT @rownum:=0) r, hotel_submits t ".
"ORDER BY id desc LIMIT $offset, 2");
// I just split it into lines so that SO doesn't make you scroll too much :-)
$this->load->view('admin/accommodation_submit_show', $data);
}
現在分頁鏈接應該工作爲標榜,但他們會做一個完整的頁面刷新。爲了解決這個問題,請這樣做:
$(function() {
// Assuming your pagination links
// are in a div with ID of pagination,
// and that you want to paginate a table with ID of paginate
$('#pagination a').live('click', function() {
$.get($(this).attr('href'), function(html) {
$('table#paginate').replaceWith($(html).find('table#paginate'));
$('#pagination').replaceWith($(html).find('#pagination'));
});
return false;
});
});
所有這些都應該起作用。但是,我們可以改進這一點。在代碼的當前狀態下,我們每次點擊都會獲得整個頁面的html,並且只是過濾掉我們想要的內容。雖然這有效,但不需要發送太多不需要的額外信息。
他們正在做的論壇,裏面有什麼,是創建專門爲這些Ajax請求量身定做的另一個控制器,這樣它會只會相關的表HTML,僅此而已。
如果您需要與幫助,讓我知道。
爲什麼'點擊後不改變分頁'(分頁改變,但不是)? 我的意思是在我的例子中(點擊後不會改變):[here-pagination](http://i.stack.imgur.com/zM3Ej.gif)。 **例子:** [我的代碼](http://www.binboy.gigfa.com/admin/hotel/show) –
我改變了,但沒有工作。看你:http://www.binboy.gigfa.com/admin/hotel/show和http://www.binboy.gigfa.com/files/js/admin.js –
你的PHP分頁是搞砸了! !如果你不會聽我的話,那你爲什麼還要繼續來這裏?就像我在回答中所說的那樣:「您的第一步是使javascript的分頁工作關閉」。現在,您的分頁鏈接指向:http://www.binboy.gigfa.com/admin/hotel/hotels/show/2,這是一個不存在的頁面。檢查你的'$ config ['base_url']'。這有什麼問題。 –