我正在尝试创建一个函数,它在搜索功能中存在和不存在。条件不存在,将显示错误 404。条件,存在。然后它将从搜索中显示。但在我写的代码中,只显示错误404。
这是我的模型:
function search_album($keyword){
$result=$this->db->query("SELECT tbl_album.*,DATE_FORMAT(album_date,'%d %M %Y') AS date FROM tbl_album WHERE album_title LIKE '%$keyword%'");
return $result;
}
这是我的控制器:
function search(){
$keyword=str_replace("'", "", $this->input->post('xfilter',TRUE));
$x['data']=$this->model_album->search_album($keyword);
if(empty($x) && empty($keyword)){
$this->load->view('view_contents',$x);
}
else if (!empty($x) && !empty($keyword)){
$this->load->view('view_error_404');
}
}
我已经尝试过这个来源,但它不起作用。你能帮我吗?
您的代码中有几个错误:
其中一个:您已互换了if 语句。例如,如果搜索没有返回任何数据并且未提供关键字,则应该显示“view_error_404”,否则,应该将数据加载到视图“view_contents”中。你做了副反之亦然,我已在下面的代码中为您更正了该问题。
二: 您正在检查 $x 是否为空,因为您已初始化 $x['data'],因此它永远不会为空。请注意,模型可以返回空数据,例如 $x['data'] 为空。相反,通过将 empty($x) 替换为 empty($x['data'])
来检查搜索结果是否为空三: 在您的模型中,您将返回查询构建器类,但不是查询语句中的实际数据。相反,将
return $result;
替换为 return $result->result();
四: 从您的 if 语句 中,您需要添加一个 else 语句,以便如果永远不满足 2 个条件,它就可以执行。在您当前的实现中,有一种状态不满足第一个或第二个条件,并会导致黑屏。
if(empty($x['data']) && empty($keyword)){
$this->load->view('view_error_404');
}else if (!empty($x['data']) && !empty($keyword)){
$this->load->view('view_contents',$x);
}else{
$this->load->view('view_error_404'); // replace this code with your preference
}
你需要在routes.php文件中提及搜索功能,如下所示:-
$routes['search'] ='your_controller_name/search';
在不知道你的函数
model_album->search_album($keyword)
并假设它返回一个字符串或数组的情况下,你不需要担心检查关键字,因为如果没有关键字,函数应该返回 false 或空。
无论如何,你混淆了 if/else 条件,因为你正在检查非空结果返回 404,而不是空结果返回 404。
这应该可以做到:
if(empty($x)){
$this->load->view('view_error_404');
}
else {
$this->load->view('view_contents',$x);
}