方法一(推薦)
所以對於笨,你分頁有3個主要變量,您必須設置和調用一個配置方法。你也有一個你必須加載的庫。
圖書館是$this->load->library('pagination');
3個變量和配置是這樣的:
//This next line is used mainly so the page number links on your pagination work.
$config['base_url'] = 'http://example.com/index.php/test/page/';
$config['total_rows'] = $NumberOfRecords;
$config['per_page'] = 20;
$this->pagination->initialize($config);
如果您正在使用MVC那麼這是很簡單的。您可以在您的控制器中使用上述代碼,從第n行抓取要顯示的數據,其中n是page number * $config['per_page']
,結束於((page number * $config['per_page']) + $config['per_page'])-1
。
獲得必要的數據後,您會將該數據和鏈接代碼返回到您的視圖。鏈接代碼$this->pagination->create_links();
所以你的回報可能是這個樣子:
$data["results"] = $this->MyModel->MySqlMethod($config["per_page"], $CurrentPage);
$data["links"] = $this->pagination->create_links();
然後在你看來,你將通過$data["results"]
,並在循環後循環,你會顯示$data["links"]
這給你的數據顯示,然後在底部的分頁看起來像
所以您的控制器一起應該是這樣的:
$config['base_url'] = 'http://example.com/index.php/controllerName/ViewName/';
$config['total_rows'] = $NumberOfRecords;
$config['per_page'] = 20;
$this->pagination->initialize($config);
$data["results"] = $this->MyModel->MySqlMethod($config["per_page"], $CurrentPage);
$data["links"] = $this->pagination->create_links();
return $this->load->view("ViewName", $data);
方法二(不推薦)
現在你提到一些有關存儲在會話變量數據。我的意思是如果你想你可以做到這一點。如果你打算使用這種方法,那就告訴你沒有使用MVC。 CodeIgniter用於MVC。如果你不使用MVC,那麼你可能不需要CodeIgniter。如果你對使用CodeIgniter感到滿意,並且不想嘗試和實現MVC,那麼一定要繼續。
要在此方法中執行CodeIgniter分頁,您需要更改公共searchterm_handler($ searchterm)函數。會話變量的事情是它們存儲在用戶瀏覽器中,這樣程序員就可以在站點的任何位置訪問它們,而無需返回並將它們從類傳遞到類或方法。如果你設置了一個會話變量,那麼你會返回它,這是重複的和不必要的。
你並不真的需要這個方法,這是不必要的,但你可以做這樣的事情:在調用searchterm_handler($searchterm)
代碼
public function searchterm_handler($searchterm) {
$result = mysqli_query("SELECT count(*) FROM User_info");
$row = mysqli_fetch_row($result);
$TotalDataCount = $row[0];
$this->session->set_userdata("TotalDataCount", $TotalDataCount);
$this->session->set_userdata("RecordsPerPage", 20);
$this->session->set_userdata("BaseURL", www.example.com/link/to/your/page.php);
$this->pagination->initialize($config);
if($searchterm) {
$this->session->set_userdata('searchterm', $searchterm);
//Unnecessary
//return $searchterm;
} else {
$this->session->set_userdata('searchterm', "");
//return $searchterm;
}
}
然後,你可以這樣做:
searchterm_handler($input);
$searchterm = $this->session->userdata('searchterm');
$dataToReturn = array();
if($searchterm!="") {
$result = mysqli_query("SELECT * FROM table WHERE field LIKE '%$this->session->userdata('searchterm')%'");
if($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
echo $this->pagination->create_links();
讓我用舊YOU
這個第二種方法很粗糙,很醜陋,而且寫得很糟糕。沒有真正的好方法來寫你想寫的東西。使用CodeIgniter的目的是爲了MVC,並建立在CodeIgniter功能中,當你擺脫MVC時,你幾乎失去了所有這些功能。
我知道有一個機會,我誤解了你正在嘗試做什麼,但這是我最好的猜測。我最好的建議是在CodeIgniter中使用MVC。
這裏有一些資源,如果你使用第一種方法,可以幫助你:
https://www.sitepoint.com/pagination-with-codeigniter/
https://www.codeigniter.com/userguide3/libraries/pagination.html
我希望這可以幫助,我花了很多時間寫它...
更新 - 方法3
我試着在你的問題再次尋找,也許這將有助於
public function searchterm_handler($searchterm)
{
if($searchterm && $this->session->userdata('email'))
{ //user logged in
$this->session->set_userdata('searchterm', $searchterm);
$array = array(
"searchterm" => $searchterm,
"email" => $this->session->userdata('email'),
"username" => $this->session->userdata('username')
);
return $array;
}
else if($searchterm && !$this->session->userdata('searchterm'))
{ //user not logged in
$this->session->set_userdata('searchterm', $searchterm);
return $searchterm;
}
elseif($this->session->userdata('searchterm') && $this->session->userdata('searchterm'))
{ //user logged in
$searchterm = $this->session->userdata('searchterm');
$array = array(
"searchterm" => $searchterm,
"email" => $this->session->userdata('email'),
"username" => $this->session->userdata('username')
);
return $array;
}
elseif($this->session->userdata('searchterm') && !$this->session->userdata('searchterm'))
{ //user not logged in
$searchterm = $this->session->userdata('searchterm');
return $searchterm;
}
else
{
$searchterm ="";
return $searchterm;
} }
對不起,如果這是可能的,我做到了我的電話
我想嘗試回答你的問題上,但我很困惑的你在問什麼。糾正我,如果我錯了。您希望用戶能夠輸入一個搜索詞,它應該保存在$ searchterm和會話中的userdata中。存儲之後,您想要設置內置分頁的CodeIgniter?如果我是對的,我想我可以幫忙。請讓我知道。 – Jwags
我想在會話中設置多個變量。所以在分頁我可以使用該變量在下一頁 – riya
太多的細節丟失,你不明白你在這裏問什麼。 「高級搜索參數」是什麼意思?你提供的代碼和問題本身有什麼分頁? '$ searchterm'包含什麼,如果它是一個數組,它將被存儲在會話中。 – jtheman