2016-06-29 46 views
1

我有一個搜索頁面,其中包含四個下拉列表,其中設置的值用於查詢數據庫。我已經測試確保將值傳遞給模型,但數據庫正在返回空數組。但是,如果將值直接輸入到模型中的sql查詢中,則會返回結果集。以下是我的代碼。提前致謝。結果從codeigniter模型返回空

控制器

public function search(){ 

    $this->form_validation->set_rules('state', 'State', 'required'); 
    $this->form_validation->set_rules('city', 'City', 'required'); 
    $this->form_validation->set_rules('minPrice', 'Minimum Price', 'required'); 
    $this->form_validation->set_rules('maxPrice', 'Maximum Price', 'required'); 

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

     $this->index(); 
    } 
    else{ 

     $state  = $this->input->post('state'); 
     $city  = $this->input->post('city'); 
     $minPrice = $this->input->post('minPrice'); 
     $maxPrice = $this->input->post('maxPrice'); 

     $data['hostel_search'] = $this->Hostel_model->search_hostels($state, $city, $minPrice, $maxPrice); 
     $this->load->view('_parts/header'); 
     $this->index_top(); 
     $this->load->view('search', $data); 
     $this->load->view('_parts/footer'); 
    } 
} 

型號使用這個JavaScript基於狀態ID返回的值來填充城市

public function search_hostels($state, $city, $minPrice, $maxPrice){ 


    $state = (int)$state; 
    $city = (int)$city; 
    $minPrice = (int)$minPrice; 
    $maxPrice = (int)$maxPrice; 

    $query = $this->db->query("SELECT * FROM `hostels` WHERE `state_id`='$state' AND `city_id`='$city' AND `price` BETWEEN '$minPrice' AND '$maxPrice'"); 
    $this->db->from($this->table); 
    $result = $query->result(); 
    return $result; 

} 

查看

<?php echo form_open('site/search'); ?> 

     <div class="col-sm-4"> 
      <div class="form-group input-group"> 
      <span class="input-group-addon"><i class="fa"><strong>State</strong></i></span> 
     <select id="state" name="state" class="form-control" required> 
       <option value="" selected>--Select State--</option> 
     <?php foreach ($state_option as $state_id => $state) { ?> 
      <option id="<?php echo $state_id; ?>" value="<?php echo $state_id; ?>"><?php echo $state; ?></option> 
     <?php } ?> 
      </select> 
      </div> 
      </div> 

     <div class="col-sm-4"> 
      <div class="form-group input-group"> 
      <span class="input-group-addon"><i class="fa"><strong>City</strong></i></span> 
     <select id="city" name="city" class="form-control" required> 
        <option id="" value="" selected>--Select City--</option> 
       </select> 
      </div> 
      </div> 


     <div class="col-sm-4"> 
      <div class="form-group input-group"> 
      <span class="input-group-addon"><i class="fa"><strong>Purpose</strong></i></span> 
      <select name="purpose" class="form-control" required> 
        <option value="" selected>--Select Purpose--</option> 
        <option value="rent">Rent</option> 
       <option value="let">Let</option> 
       </select> 
      </div> 
      </div> 

     <div class="col-sm-4"> 
      <div class="form-group input-group"> 
      <span class="input-group-addon"><i class="fa"><strong>Min Price</strong></i></span> 
       <select name="minPrice" class="form-control" required> 
         <option value="" selected>--Select Price--</option> 
         <option value="5000">5000</option> 
        <option value="7000">7000</option> 
        <option value="8000">8000</option> 
        <option value="9000">9000</option> 
        <option value="10000">10000</option> 
      </select> 
      </div> 
      </div>   

     <div class="col-sm-4 pull-center" > 
     <button class="btn btn-block btn-info btn-md" type="submit" style="margin-bottom:20px; background-color:#06F; border-radius:5px; border:none; position: relative;" id="search"><i class="fa fa-search"></i>&nbsp;Search</button> 
    </div> 

    <div class="col-sm-4"> 
     <div class="form-group input-group"> 
     <span class="input-group-addon"><i class="fa"><strong>Max Price</strong></i></span> 
       <select name="maxPrice" class="form-control" required> 
        <option value="" selected>--Select Price--</option> 
        <option value="50000">50000</option> 
        <option value="60000">60000</option> 
        <option value="70000">70000</option> 
        <option value="80000">80000</option> 
        <option value="100000">100000</option> 
     </select> 
     </div> 
     </div> 
     <?php echo form_close();?> 

AM

$(document).ready(function(){ 
     $('#state').change(function(){ 
     $('#city').html('<option>Loading....</option>'); 
     var state = $('#state').val(); 
     if (state != "") { 
      $.get("<?php echo base_url(); ?>site/dependent_dropdown/"+state).success(function(data){ 
       $('#city > option').remove();     
       data = JSON.parse(data); 
       for(var i in data){ 
       $('#city').append("<option id='"+i+"' value='"+data+"'>"+data[i]+"</option>"); 
       } 

      }) 
     } 
     else{ 
     $('#city').html('<option>--Select City--</option>'); 
     } 
     }); 

    }); 

而且請不要擔心$this->index_top()。它是服務於它的目的。

+0

添加您的視圖代碼以及 –

+0

這是什麼'$ this-> index_top();'? –

+0

@Abdulla,我添加了這個視圖。 – pimpace

回答

1

我的JavaScript是問題 我改變了這一行 $('#city').append("<option id='"+i+"' value='"+data+"'>"+data[i]+"</option>"); 這個 $('#city').append("<option value='"+i+"'>"+data[i]+"</option>"); 非常感謝@Goose,即調試語法是線索。我注意到從我的索引頁面,$city_id返回0。但是從搜索頁面獲取適當的值。然後螢火蟲來了,剩下的就是歷史。

如果您發現我的問題有幫助請回答。

謝謝你們。