Code Igniter 中使用控制器的情况

问题描述 投票:0回答:3

我正在尝试创建一个函数,它在搜索功能中存在和不存在。条件不存在,将显示错误 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');
    }
    
}

我已经尝试过这个来源,但它不起作用。你能帮我吗?

php codeigniter conditional-statements
3个回答
0
投票

您的代码中有几个错误:

其中一个:您已互换了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
}

0
投票

你需要在routes.php文件中提及搜索功能,如下所示:-

$routes['search'] ='your_controller_name/search';

0
投票

在不知道你的函数

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.