Javascript 在php表单中处理动态数量的输入时遇到问题
因此,我做了一些研究,但由于缺乏php方面的经验,我还没有找到一个非常有效的解决方案。我有一个表单中的html表,我可以用Javascript动态地向其中添加行,所以当我提交表单时,我希望能够处理未知数量的数据。这就是我的表格Javascript 在php表单中处理动态数量的输入时遇到问题,javascript,php,html,forms,postgresql,Javascript,Php,Html,Forms,Postgresql,因此,我做了一些研究,但由于缺乏php方面的经验,我还没有找到一个非常有效的解决方案。我有一个表单中的html表,我可以用Javascript动态地向其中添加行,所以当我提交表单时,我希望能够处理未知数量的数据。这就是我的表格 <form action = "getCreditReport.php" method = "post"> <tbody> <tr id='addr0' data-id="0" class="hidden"&
<form action = "getCreditReport.php" method = "post">
<tbody>
<tr id='addr0' data-id="0" class="hidden">
<td data-name="courseDropdown[]">
<select name="courseDropdown[]">
<option value = "">Select Course</option>
<?php
$dbconn = pg_connect("host=localhost dbname=ourDB user=postgres password=*******")
or die('Could not connect: ' . pg_last_error());
$stat = pg_connection_status($dbconn);
if ($stat === PGSQL_CONNECTION_OK) {
echo 'Connection status ok';
} else {
echo 'Connection status bad';
}
$result = pg_query($dbconn, "SELECT id, title FROM courses");
while ($row = pg_fetch_row($result)) {
echo "<option value=".$row[0].">".$row[1]."</option>";
}
pg_close($db);
header('Content-type: application/json');
echo json_encode($result);
?>
<td data-name="yearDropdown[]">
<select name="yearDropdown[]">
<option value = "">Select Year Taken</option>
<option value = "2015">2015</option>
<option value = "2014">2014</option>
<option value = "2013">2013</option>
<option value = "2012">2012</option>
<option value = "2011">2011</option>
<option value = "2010">2010</option>
<option value = "2009">2009</option>
<option value = "2008">2008</option>
</select>
</td>
<td data-name="selterm[]">
<select name="selterm[]">
<option value = "">Select Term</option>
<option value = "1">Spring</option>
<option value = "2">Fall</option>
<option value = "3">Winter</option>
<option value = "4">Summer</option>
</select>
</td>
<td data-name="del">
<button nam"del0" class='btn btn-danger glyphicon glyphicon-remove row-remove'></button>
</td>
</tr>
</tbody>
<input type= "submit" value = "Submit">
</form>
我添加行的函数会复制每个选择框的名称,因为它们是一个数组,我希望在处理它们时,我可以在getCreditReport.php中执行类似的操作
<html>
<body>
`<?php
$dbconn = pg_connect("host=localhost dbname=ourDB user=postgres password=*****")
or die('Could not connect: ' . pg_last_error());
// For as many rows as the user submits
for ($i = 0; $i < count($_POST['courseDropdown']); $i++) {
$courseDropdown = $_POST['courseDropdown'][$i]; // Get this course from the array
// Do some PHP Stuff Here, maybe...
echo $courseDropdown;
}
pg_close();
?>
</body>
</html>
我希望$_POST['courseDropdown']将是用户在提交之前添加的行中所有选定选项的值的数组,但当我尝试运行它时,并没有任何响应
再说一次,我对PHP非常缺乏经验,所以请对我放轻松,但这里可能发生了什么?这是解决问题的好方法吗?如果不是,还有什么更好的方法?提前谢谢
下面是添加动态行的代码
<script>
function addDynamicRows(table) {
// Dynamic Rows Code
// Get max row id and set new id
var newid = 0;
$.each(table.find("tr"), function () {
if (parseInt($(this).data("id")) > newid) {
newid = parseInt($(this).data("id"));
}
});
newid++;
var tr = $("<tr></tr>", {
id: "addr" + newid,
"data-id": newid
});
// loop through each td and create new elements with name of newid
$.each(table.find("tbody tr:nth(0) td"), function () {
var cur_td = $(this);
var children = cur_td.children();
// add new td and element if it has a nane
if ($(this).data("name") != undefined) {
var td = $("<td></td>", {
"data-name": $(cur_td).data("name")
});
var c = $(cur_td).find($(children[0]).prop('tagName')).clone().val("");
// Here we won't make the name unique because we want each select name to be
// part of the same array. e.x courseDropdown[] for each one will push each
// value to an array that will be passed
c.attr("name", $(cur_td).data("name"));
c.appendTo($(td));
td.appendTo($(tr));
} else {
var td = $("<td></td>", {
'text': table.find('tr').length
}).appendTo($(tr));
}
});
// add the new row
$(tr).appendTo(table);
$(tr).find("td button.row-remove").on("click", function () {
$(this).closest("tr").remove();
});
}
</script>
在getCreditReport.php中,在$dbconn位之前,可以执行如下操作:var\u dump$\u POST;Die复制行的函数是什么样的?你试过var_dump$\u POST来查看提交了什么吗?var_dump$\u POST给我:array3{[courseDropdown]=>array1{[0]=>string0}[yearDropdown]=>array1{[0]=>string0}……看起来所选的值实际上并没有注册,我确实为所有选项选择了值。我将更新我的帖子,以包含add row函数的代码。确定使用该函数向表中添加一组行,查看源代码或使用Inspect元素/Firebug,并查看新选项上的名称设置。我感觉名字没有定下来。我已经检查过了,只是再检查了一遍。在getCreditReport.php中,在$dbconn位之前,可以执行如下操作:var\u dump$\u POST;Die复制行的函数是什么样的?你试过var_dump$\u POST来查看提交了什么吗?var_dump$\u POST给我:array3{[courseDropdown]=>array1{[0]=>string0}[yearDropdown]=>array1{[0]=>string0}……看起来所选的值实际上并没有注册,我确实为所有选项选择了值。我将更新我的帖子,以包含add row函数的代码。确定使用该函数向表中添加一组行,查看源代码或使用Inspect元素/Firebug,并查看新选项上的名称设置。我感觉名字没有定下来。我已经检查过了,只是再检查了一遍。所有的s都被恰当地命名。