我有一个表单,要求提供就业历史,你在哪里申请过大学等。例如,对于他们申请的大学,我首先有一个文本框,下面有一个按钮,调用javascript函数在它下面添加另一个文本输入。当我第一次制作这个表单时,我是用几个不同的数据片段来做的,一旦它们被提交,我就会从$_POST
获取它们,并将它们放入数组中,然后将该数组的每个元素添加到我的db中的相应表中。但是,突然之间,我不能再提交我的表单,我收到一条消息,告诉我我试图获取一个未指定的索引。但是,当我在浏览器中检查文本输入时,它们的名称是正确的。我读到我应该将它们命名为college[]
,以便它们都进入一个数组中,但这也不起作用……这次又是什么?
js:
var numcol = 1;
function addnewschool(){
numcol++;
var container = document.getElementById("collegecontainer");
container.appendChild(document.createTextNode(numcol));
var input = document.createElement("input");
input.type = "text";
input.name = 'applied'+numcol;
container.appendChild(input);
container.appendChild(document.createElement("br"));}
html:
<p class="text-dark mb-4">List the Colleges you have applied to:<br>
<div id="collegecontainer" name="collegecontainer">
<input type="text" name='applied1'><br>
</div>
<input type="button" id="addcollege" name="addcollege" value="Add College"
onClick="addnewschool()"><br>
</p>
php:
$applied = array();
foreach($_POST['applied'] as $value){
array_push($applied, $value);
}
更新:好的,我把它改成了另一种方式,但那不起作用,所以我决定只复制它的一个早期版本,然后粘贴到正确的布局中。这很有效..。所以现在它被修复了,我继续添加它。我给一些标签添加了"required“,稍微改变了一些样式,还稍微修改了我的javascript文件。但现在我遇到了和以前一样的问题。我所有的POST数组都只有第一个值。我能添加什么来改变这一点呢?有没有人遇到过这样的问题?
发布于 2018-06-13 02:53:53
您的第一个附加输入应该具有索引"applied1",而不是"applied2“
请看:
var numcol = 1; // put this to 0
function addnewschool(){
numcol++; // or move this to the end of the function
发布于 2018-06-13 02:54:08
将您的文本输入字段命名为applied[]
,在处理表单时,$_POST['applied']
的post值将是一个已填充的数组,其中包含已完成的条目数量。
要将数据放入表中,请执行以下操作:
foreach ($_POST['applied'] as $id => $applied) {
$sql = "INSERT INTO Colleges(id, college) VALUES('$id','$applied')";
if($conn2->query($sql) === TRUE){
echo "New Record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn2->error;
}
} // end of foreach
发布于 2018-06-13 03:08:09
您不需要为每个输入添加不同的名称。只要在所有输入名称中使用applied[]
即可。
要在PHP中获得数组,只需使用$_POST['applied']
。
如果你想在以后使用它们,你可以使用foreach
,比如
foreach ($_POST['applied'] as $value) {
// Do what you want. Retrieve the value using $value
}
或者任何其他你喜欢的方法。
https://stackoverflow.com/questions/50823935
复制相似问题