0

我已经在网上搜寻了一段时间,试图找到一个对我有帮助的解决方案,但没有运气。

我有一个简单的销售表格,用户在其中从下拉列表中选择产品。在选择一个值时,我希望将输入框值传递给数据库查询,并将查询结果(价格)显示在表单上。如果可能的话,我希望结果填充一个输入框,以便销售人员可以根据需要进行调整。

我正在使用 codeigniter,这使得找到一个好的例子变得非常困难。

控制器

function new_blank_order_lines() 
  {
   $this->load->view('sales/new_blank_order_lines');
  }

模型

 function get_sku_price($q){
    $this->db->select('ProductPrice');
    $this->db->where('ProductCode', $q);
    $query = $this->db->get('ProductList');
    if($query->num_rows > 0){
      foreach ($query->result_array() as $row){
        $row_set[] = htmlentities(stripslashes($row['ProductPrice'])); //build an array
      }
      $this->output->set_content_type('application/json')->set_output(json_encode($row_set));

    }
  }

看法

<table>
  <tr><td>Product</td><td>Price</td></tr>
  <tr>
   <td><select name="product">
       <option="sku1">product 1</option>
       <option="sku2">product 2</option>
       <option="sku3">product 3</option>
   <select></td>
   <td><input type="text" id="price" name="price" /></td>
  </tr>
</table>

我已经加载了 jquery 库,1.9.1。

我有自动完成功能,但语法不一样。

所以我想要的是,当我从product下拉列表中选择产品代码时,将值传递给模型,然后在输入框中显示查询结果(价格)price

谁能提供一些关于如何做到这一点的见解,或者一个好的工作示例?

感谢一百万,这个社区真棒!

法比奥

控制器:

function new_blank_order_lines() 
  {
   $this->load->view('sales/new_order');
  }

风景:

<script>
$("#product").change(function () {
    //get the value of the select when it changes
    var value = $("#product").val()

    //make an ajax request posting it to your controller
    $.post('<?=base_url("sales/get_sku_prices")?>', {data:value},function(result) {
      //change the input price with the returned value
      $('#price').value(result);
    });
});
</script>
  <table>
  <tr><td>Product</td><td>Price</td></tr>
  <tr>
   <td><select name="product" id="product">
       <option value="sku1">product 1</option>
       <option value="sku2">product 2</option>
       <option value="sku3">product 3</option>
   </select></td>
   <td><input type="text" id="price" name="price" /></td>
  </tr>
</table>

控制器获取数据库数据:

  function get_sku_prices(){
    //check if is an ajax request
    if($this->input->is_ajax_request()){
        //checks if the variable data exists on the posted data
        if($this->input->post('data')){
            $this->load->model('Sales_model');
            //query in your model you should verify if the data passed is legit before querying
            $price = $this->your_model->get_sku_price($this->input->post('data', TRUE));

            echo $price;
        }
    }
}

模型:

  function get_sku_price($q){
    $this->db->select('ProductPrice');
    $this->db->where('ProductCode', $q);
    $query = $this->db->get('ProductList');
    if($query->num_rows > 0){
      foreach ($query->result_array() as $row){
        $row_set[] = htmlentities(stripslashes($row['ProductPrice'])); //build an array
      }
      $this->output->set_content_type('application/json')->set_output(json_encode($row_set));

    }
  }
4

2 回答 2

1

您的看法:

<table>
    <tr>
        <td>Product</td>
         <td>Price</td>
    </tr>
    <tr>
        <td>
            <select name="product" id="product">
                <option value="sku1">product 1</option>
                <option value="sku2">product 2</option>
                <option value="sku3">product 3</option>
            </select>
            </td>
        <td>
            <input type="text" id="price" name="price" />
        </td>
    </tr>
</table>

javascript

<script>
  $("#product").change(function () {
    //get the value of the select when it changes
    var value = $("#product").val()

    //make an ajax request posting it to your controller
    $.post('<?=site_url("controller/function")?>', {data:value},function(result) {
      //change the input price with the returned value
      $('#price').value(result);
    });
  });
</script>

控制器:

public function your_funtion(){
    //check if is an ajax request
    if($this->input->is_ajax_request()){
        //checks if the variable data exists on the posted data
        if($this->input->post('data')){
            $this->load_model('your_model')
            //query in your model you should verify if the data passed is legit before querying
            $price = $this->your_model->get_price($this->input->post('data', TRUE));

            echo $price;
        }
    }
}
于 2013-03-19T20:47:10.123 回答
0

使用 jquery 的 ajax,发布获取和更改事件..在这里使用发布

例子..

 $('select[name="product"]').change(function(){
      var val=$(this).val();
      $.post('path/to/controller',{data:val},function(result){
          $('#price').val(result.price);
      }, "json");
 });

控制器功能

$product=$this->input->post('data');  //this will give you the selected value of select
//make query to db in model..get price and
$price = ..//price that you got from db
echo json_encode(array('price'=> $price));
于 2013-03-19T20:32:10.860 回答