2016-04-28 32 views
1

您好傢伙我想通過在codeigniter中創建一個Job Search項目來學習CI。我正在嘗試在其中創建多個輸入字段職位搜索引擎。我有三個領域的形式。我的表格低於 Form screenshot

我的控制器代碼是這樣的:

class Search extends CI_Controller{ 

    public function normal(){ 

     $this->form_validation->set_rules('job_keywords', 'Job Keywords', 'required'); 

     if($this->form_validation->run() == FALSE){ 

      $viewdata['main_view'] = 'home'; 
      $this->load->view('layout/main', $viewdata); 

     } 
     else{ 
      $search_term = $this->input->post('job_keywords'); 
      $location = $this->input->post('job_location'); 
      $type = $this->input->post('job_type'); 
      $searchdata['search_results'] = $this->search_model->default_search($search_term, $location, $type); 

       $searchdata['main_view'] = 'search_page'; 
      $this->load->view('layout/main', $searchdata); 
     } 
    } 

}

我的模式是:

public function default_search($search_term, $location="", $type){ 

    $searchterm = $search_term; 

    $this->db->like('job_title', $searchterm); 
    $this->db->or_like('job_description', $search_term); 

    $this->db->where('type_id', $type); 

    if($location!= ""){ 
     $this->db->like('location_id', $location); 
    } 



    $res = $this->db->get('jobs'); 

    if($res->num_rows() >= 1){ 
     return $res->result(); 
    } 
    else{ 
     return false; 
    } 

} 

我的時候我只是用得到的搜索結果$ this - > $ db-> like()和$ this - > $ db-> or_like(),但是當我使用$ this - > $ db-> where()時,查詢不遵循WHERE子句。當我刪除$ this - > $ db-> or_like()時,它可以正常工作,但不能用兩個like子句。有人可以告訴我我哪裏出錯了。謝謝。

Job table structure with 2 rows of data

+0

還有一兩件事,我在數據庫中比較兩列我的第一場表演。位置字段是可選的。 –

+0

嘗試顯示上次執行的查詢,例如'echo $ this-> db-> last_query();' – KubiRoazhon

+0

我得到這個 - SELECT * FROM'jobs' WHERE'job_title' LIKE'%frontend%'ESCAPE'!'或'job_description' LIKE'%frontend%'ESCAPE'!' AND'type_id' ='pt' –

回答

0

試圖建立這樣的查詢:

$query = $this->db->query(" SELECT * FROM jobs WHERE (job_title LIKE '%".$jobtitle."%' OR job_description LIKE '%".$jobdescription."%') AND type_id = '".$type_id."' "); 

if ($query->num_rows() > 0){ 
    foreach ($query->result() as $row){ 
    //do some code 
    } 
    } 

嘗試通過在該函數的3個參數:public function default_search(..., $jobtitle, $jobdescription,$type_id)

+0

幾分鐘前,我做了同樣的事情,但有點不同,它解決了問題。問題在於,我應該使用paranthesis將OR與AND隔離在查詢中。我做了這個$ this-> db-> where(「(''job_title' LIKE'%」。$ search_term。「%'ESCAPE'!'or'job_description' LIKE'%」。$ search_term。「%'ESCAPE'! ')AND'type_id' ='「。$ type。」'「); \t \t \t \t \t \t $ res = $ this-> db-> get('jobs'); –

+0

謝謝你的回答。這非常有幫助 –

相關問題