我有一个用于将食谱插入数据库的主表单。除了能够将多个成分插入数据库之外,大多数表单都有效。
我想我需要一个数组来保存成分输入(ingredient_name,数量,测量类型),然后以某种方式循环遍历该数组,因为用户可以点击“添加新成分”按钮和jquery添加一组新的输入)。我可能会自己解决这个问题,因为之前已经问过,但是......
...我遇到的真正问题是需要将'ingredient_name'输入插入到一个表(成分)中,并且需要将'amount'和'measurement type'输入插入到另一个表中table(ingredientLists)。我不知道该怎么做。
<input type="text" name="ingredient_name" value="" />
<input type="text" name="amount" value="" />
<select name="measurement_ID" value="">
<option value="14" >n/a</option>
<option value="1" >teaspoon</option>
<option value="2" >tablespoon</option>
<option value="3" >fluid ounce</option>
<option value="4" >cup</option>
<option value="5" >pint</option>
<option value="6" >quart</option>
<option value="7" >pound</option>
<option value="8" >ounce</option>
<option value="9" >milligram</option>
<option value="10" >gram</option>
<option value="11" >millimeter</option>
<option value="12" >centimeter</option>
<option value="13" >inch</option>
</select>
我不确定我是否可以使用我现在的表单设置正确处理它。
这是我到目前为止处理成分输入的原因(此设置仅允许将第一种成分输入数据库)。
$recipe_id = $pdo->lastInsertId('recipe_ID');
//inputs inserted into ingredient table
$query2 = $pdo->prepare('INSERT INTO ingredients (ingredient_name) VALUES (?)');
$query2->bindValue(1, $ingname);
$query2->execute();
$ingredient_id = $pdo->lastInsertId('ingredient_ID');
//inputs inserted into ingredient list table
$query3 = $pdo->prepare('INSERT INTO ingredientLists (recipe_ID, ingredient_ID, amount, measurement_ID) VALUES (?,?,?,?)');
$query3->bindValue(1, $recipe_id);
$query3->bindValue(2, $ingredient_id);
$query3->bindValue(3, $amount);
$query3->bindValue(4, $measure);
$query3->execute();
答案 0 :(得分:1)
要提交多行,您需要将它们放在一个数组中(注意名称后面的括号)
<input type="text" name="ingredient_name[]" value="" />
<input type="text" name="amount[]" value="" />
<select name="measurement_ID[]">
<option value="14" >n/a</option>
<option value="1" >teaspoon</option>
<option value="2" >tablespoon</option>
<option value="3" >fluid ounce</option>
<option value="4" >cup</option>
<option value="5" >pint</option>
<option value="6" >quart</option>
<option value="7" >pound</option>
<option value="8" >ounce</option>
<option value="9" >milligram</option>
<option value="10" >gram</option>
<option value="11" >millimeter</option>
<option value="12" >centimeter</option>
<option value="13" >inch</option>
</select>
当发布到你的php脚本时,它们将是你可以循环的数组。
$ingredient_name=$_POST['ingredient_name'];
$amount=$_POST['amount'];
$measurement_ID=$_POST['measurement_ID'];
for($i=0;$i<=count($ingredient_name);$i++) {
if (isset($ingredient_name[$i])){
//do your insert queries here you can insert to any tables you need to.
//the variables are accessed like this $ingredient_name[$i]
}
}
以下是使用您的代码
$recipe_id = $pdo->lastInsertId('recipe_ID');
$ingname=$_POST['ingredient_name'];
$amount=$_POST['amount'];
$measure=$_POST['measurement_ID'];
for($i=0;$i<=count($ingname);$i++) {
if (isset($ingname[$i])){
$query2 = $pdo->prepare('INSERT INTO ingredients (ingredient_name) VALUES (?)');
$query2->bindValue(1, $ingname[$i]);
$query2->execute();
$ingredient_id = $pdo->lastInsertId('ingredient_ID');
$query3 = $pdo->prepare('INSERT INTO ingredientLists (recipe_ID, ingredient_ID, amount, measurement_ID) VALUES (?,?,?,?)');
$query3->bindValue(1, $recipe_id);
$query3->bindValue(2, $ingredient_id);
$query3->bindValue(3, $amount[$i]);
$query3->bindValue(4, $measure[$i]);
$query3->execute();
}
}
答案 1 :(得分:0)
拿出查询和pdo的东西。
$ingname = $_POST['ingredient_name'];
$amount = $_POST['amount']; //ingredient amount
$measure = $_POST['measurement_ID']; //ingredient measurement
for($i=0;$i<=count($ingname);$i++) {
if (isset($ingname[$i])){
print_r($_POST['ingredient_name']);
}
}
当我打印包含成分名称的数组时,结果就是这样。它只重复了四次,因为我输入了四种成分。我不确定这是好还是坏。
Array ( [0] => cookies [1] => candy [2] => chocolate [3] => cake ) Array ( [0] => cookies [1] => candy [2] => chocolate [3] => cake ) Array ( [0] => cookies [1] => candy [2] => chocolate [3] => cake ) Array ( [0] => cookies [1] => candy [2] => chocolate [3] => cake )