2016-03-01 51 views
4

我使用codeigniter,我想創建一個頁面,如果URL輸入example.com/mobil/bekas/toyota/avanza它顯示所有用豐田作爲品牌的二手車和avanza作爲模型,如果url輸入example.com/mobil/bekas/toyota,它會顯示所有使用豐田作爲品牌的二手車。Codeigniter CodeGo.net,使用URL作爲查詢參數

這裏是我的控制器:

public function bekas($brand_nama,$model_nama='NULL') 
     {  
       $this->load->model('listing_model'); 
       $data['cars'] = $this->listing_model->viewListingByBrandAndModel($brand_nama, $model_nama); 
       $this->load->view('product_listing.php', $data); 
     } 

這裏是模型:

function viewListingByBrandAndModel($brand_nama, $model_nama) 
    { 

     $this->load->library('pagination'); 
      $this->load->library('table'); 
      $config['base_url'] = 'http://example.com/mobil/bekas/'.$brand_nama.'/'.$model_nama; 
      $config['total_rows'] = $this->db->select('*') 
          ->join('car_list_tbl','car_list_tbl.car_list_ID = user_listing_tbl.car_list_ID') 
          ->join('member_tbl','member_tbl.mID = user_listing_tbl.mID') 
          ->join('model_tbl','model_tbl.model_ID = car_list_tbl.model_ID') 
          ->join('series_tbl','series_tbl.series_ID = car_list_tbl.series_ID') 
          ->join('body_type_tbl','body_type_tbl.body_type_nama = car_list_tbl.body_type_nama') 
          ->join('brand_tbl','brand_tbl.brand_name = car_list_tbl.brand_name') 
          ->where('car_list_tbl.brand_name',$brand_nama) 
          ->like('model_tbl.model_nama', $model_nama) 
          ->where('user_listing_tbl.listing_type','BEKAS') 
          ->get('user_listing_tbl')->num_rows(); 
      $config['per_page'] = 20; 
      $config['num_links'] = 10; 
      $config['display_pages'] = TRUE; 
      $config['full_tag_open'] = '<ul class="pagination">'; 
      $config['full_tag_close'] = '</ul>'; 
      $config['cur_tag_open'] = '<li class="active"><a href="#">'; 
      $config['cur_tag_close'] = '</a></li>'; 
      $config['num_tag_open'] = '<li>'; 
      $config['num_tag_close'] = '</li>'; 
      $config['first_link'] = FALSE; 
      $config['last_link'] = FALSE; 
      $config['prev_link'] = false; 
      $config['next_link'] = false; 
      $config['next_tag_open'] = '<li><a href="#"><i class="fa fa-chevron-left">'; 
      $config['next_tag_close'] = '</i></a></li>'; 
      $config['prev_tag_open'] = '<li><a href="#"><i class="fa fa-chevron-right">'; 
      $config['prev_tag_close'] = '</i></a></li>'; 
      $this->pagination->initialize($config); 

      //Pagination End 

      $sql = $this->db->select('*') 
          ->join('car_list_tbl','car_list_tbl.car_list_ID = user_listing_tbl.car_list_ID') 
          ->join('member_tbl','member_tbl.mID = user_listing_tbl.mID') 
          ->join('brand_tbl','brand_tbl.brand_name = car_list_tbl.brand_name') 
          ->join('model_tbl','model_tbl.model_ID = car_list_tbl.model_ID') 
          ->join('series_tbl','series_tbl.series_ID = car_list_tbl.series_ID') 
          ->where('car_list_tbl.brand_name',$brand_nama) 
          ->like('model_tbl.model_nama', $model_nama) 
          ->where('user_listing_tbl.listing_type','BEKAS') 
          ->get('user_listing_tbl', $config['per_page'], $this->uri->segment(5)); 
      return $sql->result(); 

我還是新手,在網絡編程,我可以對缺少哪一部分我很投入?因爲它工作時,我輸入example.com/mobil/bekas/toyota/avanza但它不會顯示任何東西,當我鍵入example.com/mobil/bekas/toyota

回答

0

您的函數聲明有一個小的語法錯誤。值NULL是PHP中的一個特殊值,因此不應用引號括起來。由於這個原因,您在查詢'toyota'類型的數據庫時使用了make 'NULL'而不是NULL。 更改控制器代碼應該解決這個問題:

public function bekas($brand_nama,$model_nama=NULL) 
{ 
//... 
} 
+0

感謝您的信息,但它仍然不會顯示任何東西,如果我在example.com/mobil/bekas/toyota/ –

+0

製作條件類型'如果($ model_nama == NULL){/ *只是搶$品牌* /}其他{/ *同時抓住* /}'。 – Tpojka

1

1)你傳入NULL爲一個字符串參數

2)請使用在$ MODEL_NAME如果條件基地在數據庫的時間查詢。不要在查詢中使用類似的model_name LIKE''傳遞額外的條件;

$this->db->select('*') 
    ->join('car_list_tbl','car_list_tbl.car_list_ID = user_listing_tbl.car_list_ID') 
    ->join('member_tbl','member_tbl.mID = user_listing_tbl.mID') 
    ->join('brand_tbl','brand_tbl.brand_name = car_list_tbl.brand_name') 
    ->join('model_tbl','model_tbl.model_ID = car_list_tbl.model_ID') 
    ->join('series_tbl','series_tbl.series_ID = car_list_tbl.series_ID') 
    ->where('car_list_tbl.brand_name',$brand_nama); 

if($model_nama){ 
    $this->db->like('model_tbl.model_nama', $model_nama); 
} 
    $this->db->where('user_listing_tbl.listing_type','BEKAS'); 
    ->get('user_listing_tbl', $config['per_page'], $this->uri->segment(5)); 
return $this->db->result();