我想使用session设置所有高级搜索参数如何在时间设置所有参数。
我正在使用以下功能,但它只在时间设置一个参数如何在时间设置所有参数
public function searchterm_handler($searchterm)
{
if($searchterm)
{
$this->session->set_userdata('searchterm', $searchterm);
return $searchterm;
}
elseif($this->session->userdata('searchterm'))
{
$searchterm = $this->session->userdata('searchterm');
return $searchterm;
}
else
{
$searchterm ="";
return $searchterm;
} }
答案 0 :(得分:0)
方法一(推荐)
因此,对于CodeIgniter中的分页,您必须设置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 ,那么这很简单。您可以在 controller 中使用上述代码,从第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);
方法二(不推荐)
现在你提到了一些关于在Session Variables中存储数据的内容。我的意思是,如果你想要你可以做到这一点。如果您打算使用该方法,那么告诉您不使用MVC。 CodeIgniter适用于MVC。如果您不使用MVC,那么您可能不需要CodeIgniter。如果您习惯使用CodeIgniter并且不想尝试实现MVC,请务必继续。
要在此方法中执行CodeIgniter分页,您将更改公共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($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();
让我知道你
第二种方法,粗糙,丑陋,令人讨厌,写得非常糟糕。写下你想要写的东西没有真正好的方法。使用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;
} }
对不起,如果可以的话,我是在手机上做的