我正在使用jQuery插件动态添加输入文本字段。
输入元素的name
变为name="cl[]"
,name="ingredient[]"
。
现在我需要以某种方式将这些字段提交到数据库...
如果只有一个文本字段应该添加,我想我可以像这样做一个简单的foreach
- 循环:
foreach($ingredient as $val){
// do an ordinary PDO sql insert statement on each of them
}
但我需要提交两个文本字段,以及上一个查询中最后一个插入的ID。 如果我添加了两个字段,我将总共提交三个字段;像这样:
<input type="text" name="oz[]" id="cl_1" placeholder="cl" class="cl" >
<input type="text" name="ingredient[]" id="ingredient_1" placeholder="ingredient name" class="ingredient" />
<input type="text" name="oz[]" id="cl_2" placeholder="cl" class="cl" >
<input type="text" name="ingredient[]" id="ingredient_2" placeholder="ingredient name" class="ingredient" />
<input type="text" name="oz[]" id="cl_3" placeholder="cl" class="cl" >
<input type="text" name="ingredient[]" id="ingredient_3" placeholder="ingredient name" class="ingredient" />
这些字段是插入到sepparate表中的饮料的成分,最后一个id是关系键。
关于如何实现这一目标的任何建议?
更新:
我只是尝试添加名为raw_materials[]
的隐藏文本字段,并在该字段上执行ẁhile`循环。
然后在while循环中执行sql insert语句。也许我正在做些什么,但这不起作用:
while($raw_materials){
$ins_ingredients = $con->prepare(
'INSERT INTO recipes_ingredients (
recipe_id, raw_material_id, amount
) VALUES (
:last_id, :material, :amount
)'
);
$ins_ingredients->bindValues(':last_id',$last_id);
$ins_ingredients->bindValues(':material',$ingredient);
$ins_ingredients->bindValues(':amount',$oz);
$ins_ingredients->execute();
}
答案 0 :(得分:2)
看看这个:
$values = array_map(null, $_POST['oz'], $_POST['ingredient']); // You can add other arrays after this
foreach ($values as $value)
{
list($oz, $ingredient) = $value;
// Insert data in DB
}
答案 1 :(得分:1)
一个组中的cl和成分字段具有相同的数字,因此您应该使用for循环代替foreach循环:
for($x=0, $x<count($_POST['cl']); $x++) {
// now you can use $_POST['cl'][$x] and $_POST['ingredients'][$x]
}