【问题标题】:result returns empty from codeigniter model结果从 codeigniter 模型返回空
【发布时间】:2016-06-29 14:11:16
【问题描述】:

我有一个包含四个下拉列表的搜索页面,其中设置的值用于查询数据库。我已经测试以确保将值传递给模型,但数据库返回空数组。但是,如果我将值直接输入到模型中的 sql 查询中,它会返回一个结果集。以下是我的代码。提前致谢。

控制器

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');
    }
}

型号

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 使用此 JavaScript 根据状态 id 中返回的值填充城市

$(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-&gt;index_top()。它服务于它的目的。

【问题讨论】:

  • 也添加您的视图代码
  • 这是什么` $this->index_top();` ??
  • @Abdulla,我已经添加了视图。
  • 在您的模型中使用 echo '&lt;br&gt;' . $this-&gt;db-&gt;last_query() . '&lt;br&gt;'; 之后的 $result = $query-&gt;result(); 以准确查看正在发送到数据库的查询。
  • @Goose,这是SELECT * FROM `hostels` WHERE `state_id`=17 AND `city_id`=17 AND `price` BETWEEN 5000 AND 100000 的输出。我通过视图输入的确切值。

标签: php codeigniter


【解决方案1】:

我的 JavaScript 是问题所在 我改变了这条线 $('#city').append("&lt;option id='"+i+"' value='"+data+"'&gt;"+data[i]+"&lt;/option&gt;"); 对此 $('#city').append("&lt;option value='"+i+"'&gt;"+data[i]+"&lt;/option&gt;"); 非常感谢@Goose,调试语法就是线索。我注意到,在我的索引页面中,$city_id 正在返回 0。但它从搜索页面获取了适当的值。然后萤火虫来玩,剩下的就是历史了。

如果您觉得我的问题和回答有帮助,请投票。

谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多