![](/img/trans.png)
[英]How do I determine which dynamically-generated submit button was clicked in my PHP form?
[英]PHP How to Insert Data Input from a Dynamically-Generated Form
在下一步将输入的数据插入动态生成的表单中时,我需要帮助。 我在其他类似问题上找了好几天,但仍然遗漏了一部分。
这是我的HTML表单(减去错误陷阱/验证):
<form id="form" name="form" method="post" action="recipeaddsubmit.php">
<table id="myTable">
<tr>
<td width="10%">Amount</td>
<td width="10%">Measure</td>
<td width="35%">Ingredient</td>
</tr>
<tr>
<td valign="top">
<input type="text" name="Amt1" id="Amt1" size="1" />
<input type="text" name="Amt2" id="Amt2" size="1" />
</td>
<td valign="top">
<select name="Measure" id="Measure">
<option>Cup</option>
<option>Ounce</option>
</select>
</td>
<td valign="top">
<input type="text" name="Ing" id="Ing" size="40" />
</td>
</tr>
</table>
<button type="button" onclick="displayResult()">Insert new row</button>
<input type="submit" name="button" id="button" value="Submit" />
</form>
这是我标头中的javascript:
<script>
function displayResult()
{
var table=document.getElementById("myTable");
var row=table.insertRow(-1);
var cell1=row.insertCell(0);
var cell2=row.insertCell(1);
var cell3=row.insertCell(2);
cell1.innerHTML="<input type='text' name='Amt1' id='Amt1' size='1' />
<input type='text' name='Amt2' id='Amt2' size='1' />";
cell2.innerHTML="<select name='Measure' id='Measure'> <option>Cup</option>
<option>Ounce</option></select>";
cell3.innerHTML="<input type='text' name='Ing' id='Ing' size='40' />";
}
</script>
这是我的尝试/部分mysqli插入语句(checkInput是我之前使用的自创建验证函数,没有问题):
$amt1 = checkInput($_POST['Amt1']);
$amt2 = checkInput($_POST['Amt2']);
$measure = checkInput($_POST['Measure']);
$ing = checkInput($_POST['Ing']);
$ingAddQuery ="INSERT INTO Ingredient (Amt1, Amt2, Measure, Ing)
VALUES ({$amt1}, {$amt2}, {$measure}, {$ing})";
mysqli_query($mysqli,$ingAddQuery);
if (!mysqli_query($mysqli,$ingAddQuery))
{
die('Error: ' . mysqli_error());
}
我不明白的是如何在一定数量的行中增加一个foreach循环。 在这种情况下,我了解概念但不了解应用程序。
谢谢您的帮助!
我有个建议。
您为什么不创建隐藏的输入类型。
<input type="hidden" name="cellCount" value="0" />
每次u插入新行时,请更改此隐藏字段的值。 这不会显示在浏览器上。 当您提交表单时,此隐藏元素也将得到提交。 可以在服务器上通过$_POST["cellCount"]
进行检索。
希望这对你有帮助。
将名称从amt1更改为amt1 []等。
所以
<input type="text" name="Amt1[]" id="Amt1[]" size="1" />
提交表单时,
$_POST['Amt1']; //is an array
将是一个数组,所以你可以做
$Amt1Array = $_POST['Amt1'];
foreach($Amt1Array => $Amt1){
//do stuff here
}
更好的是,您可以使用js索引数组以创建类似...的名称
<input type="text" name="Amt1[0]" id="Amt1[0]" size="1" />
<input type="text" name="Amt2[0]" id="Amt2[0]" size="1" />
<input type="text" name="Amt1[1]" id="Amt1[1]" size="1" />
<input type="text" name="Amt2[1]" id="Amt2[1]" size="1" />
然后在PHP中,您可以
$Amt1Array = $_POST['Amt1'];
$Amt2Array = $_POST['Amt2'];
foreach($Amt1Array as $key => $Amt1Value){
$Amt2Value = $Amt2Array[$key];
//do stuff with rows
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.