将动态创建的输入值添加到数据库

Posted

技术标签:

【中文标题】将动态创建的输入值添加到数据库【英文标题】:adding values of dynamically created inputs to database 【发布时间】:2021-04-05 14:55:06 【问题描述】:

我正在尝试使用 jquery 和 codeignitor 将一些动态创建的输入值添加到 mysql 数据库中。

html:

<td>
<input type="number" name="quantity" id="quantity" value="1">
<input type="number" name="price" id="price" value="10">
<input type="number" name="item" id="item" value="100">
</td>
<td>
<input type="number" name="quantity" id="quantity" value="5">
<input type="number" name="price" id="price" value="40">
<input type="number" name="item" id="item" value="102">
</td>
<td>
<input type="number" name="quantity" id="quantity" value="2">
<input type="number" name="price" id="price" value="14">
<input type="number" name="item" id="item" value="101">
</td>

jQuery

$("#finish_button").click(function(e) 
var quantity = [];
var price= [];
 quantity = $('#quantity').each(function()  return this.value; ).get();
 price= $('#price').each(function()  return this.value; ).get();



          $.ajax(
            type: 'post',
            url: 'sales/add_payment,
            data: values+quantity,
            success: function () 
             
            
          );   

 );

    

控制器

$data= $this->input->get('data');
$this->Sale->save($data);

型号

$data = array(
    'sale_time'      => date('Y-m-d H:i:s'),
    'item_id'    => $data['item_id'],
    'price'  => $data['price'],
    'quantity'   => $data['quantity'],

);

$this->db->insert('sales_items', $data );

上面的代码不起作用并且完全错误,当涉及到数组时我完全迷失了,任何帮助将不胜感激。

在数据库中我希望条目是这样的:

item_id price quantity
100 10 1
102 40 5
101 14 2

【问题讨论】:

这没有意义,请您澄清一下,这个 html 来自哪里(它是如何创建的)。我想您想进行更新,而不是插入数据库,因为您一定是从某个地方获得了这个动态创建的输入? html 是基于 select 创建的,因此它将是动态的,我希望每个 td 中的值作为数据库中的新行,因为我已经展示了我希望数据库中的结果 the html is created based on a select 表示请通过图片向我们展示您的任务? 【参考方案1】:

为此,您将通过将 [] 添加到输入字段来将它们视为数组。

<td>
  <input type="number" name="quantity[]" id="quantity" value="1">
  <input type="number" name="price[]" id="price" value="10">
  <input type="number" name="item[]" id="item" value="100">
  </td>
  <td>
    <input type="number" name="quantity[]" id="quantity" value="5">
    <input type="number" name="price[]" id="price" value="40">
    <input type="number" name="item[]" id="item" value="102">
  </td>
  <td>
    <input type="number" name="quantity[]" id="quantity" value="2">
     <input type="number" name="price[]" id="price" value="14">
     <input type="number" name="item[]" id="item" value="101">
   </td>

为了能够处理表单数据,您将循环每个输入组数据。

   <?php
          //count the input and iterate
           $count  = count($_POST['item'];
           for($i=0; $i<$count; $i++)
                $data = array(
                               'quantity=>$_POST['quantity'][$i],
                                'price'=>$_POST['price'][$i],
                                'item'=>$_POST['item'][$i],
                              );
                   // here you have your data you can insert into data base
                   // print_r($data); //to see what you have.
                
   ?>

【讨论】:

以上是关于将动态创建的输入值添加到数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何将 jquery ui 自动完成添加到动态创建的元素?

尝试将 EventListener 添加到动态创建的对象

如何将动态输入值添加到本地状态以进行检索

div 中动态创建的输入值当前不工作 jQuery

如何在 VueJS 中动态创建输入字段

动态添加/删除输入字段并在单独的 div 中预览字段值