我正在嘗試創建一個函式,它在搜索功能中存在和不存在。條件不存在,將顯示錯誤 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');
}
}
我已經從這個來源嘗試過,但它不起作用。你能幫助我嗎?
uj5u.com熱心網友回復:
您的代碼中有幾個錯誤:
一:您已經互換了if 陳述句。比如,如果搜索沒有回傳任何資料并且沒有提供關鍵字,它應該顯示“ view_error_404 ”,否則,它應該將資料加載到視圖“ view_contents ”中。反之亦然,我已更正在下面的代碼中為您服務。
二:您正在檢查$x是否為空,因為您已初始化$x['data'],這將永遠不會為空。請注意,模型可以回傳空資料,例如$x['data']為空。取而代之的是,檢查搜索結果是通過更換空的空($ x)的與空($ X [“資料”])
三:在您的模型中,您回傳的是查詢構建器類,而不是查詢陳述句中的實際資料。相反,替換return $result;為 return $result->result();
四: 從你的if 陳述句中,你需要添加一個else 陳述句,這樣如果兩個條件都不滿足,它就可以執行。在您當前的實作中,存在不滿足第一個或第二個條件并導致空白螢屏的狀態。
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
}
uj5u.com熱心網友回復:
您需要在 routes.php 檔案中提及搜索功能,如下所示:-
$routes['search'] ='your_controller_name/search';
uj5u.com熱心網友回復:
在不知道您的函式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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/388806.html
