提交表单时,使用javascript生成的HTML文本输入标记不会发布
我有一个表格,要求提供就业历史,你申请过大学等。例如,对于他们申请的大学,我首先有一个文本框,下面有一个按钮,调用javascript函数在其下方添加另一个文本输入。当我第一次制作这个表单时,我使用了一些不同的数据块,然后一旦它们被提交,我就会从提交表单时,使用javascript生成的HTML文本输入标记不会发布,javascript,php,html,input,Javascript,Php,Html,Input,我有一个表格,要求提供就业历史,你申请过大学等。例如,对于他们申请的大学,我首先有一个文本框,下面有一个按钮,调用javascript函数在其下方添加另一个文本输入。当我第一次制作这个表单时,我使用了一些不同的数据块,然后一旦它们被提交,我就会从$\u POST中获取它们,并将它们放入数组中,然后将数组中的每个元素添加到我数据库中的对应表中。然而,突然间,我无法再提交我的表单,我收到一条消息,告诉我我试图获取一个未指定的索引。但是,当我在浏览器中检查文本输入时,它们的名称是正确的。我读到,我应该
$\u POST
中获取它们,并将它们放入数组中,然后将数组中的每个元素添加到我数据库中的对应表中。然而,突然间,我无法再提交我的表单,我收到一条消息,告诉我我试图获取一个未指定的索引。但是,当我在浏览器中检查文本输入时,它们的名称是正确的。我读到,我应该给它们命名为college[]
,这样它们都会进入一个数组,但这也不起作用。。。。现在怎么办
js:
html:
更新:好的,我把它改成了另一种方式,但这不起作用,所以我决定复制它的一个早期版本,并将它粘贴到正确的布局中。这就成功了。。。因此,现在它已被修复,我继续添加到它。我在一些标记中添加了“required”,稍微更改了一些样式,并稍微更改了我的javascript文件。但现在我遇到了和以前一样的问题。我所有的POST数组中只有第一个值。我可以添加什么来改变这一点?有人有过类似的问题吗?您的第一个额外输入应该有索引“applied1”,而不是“applied2” 看看:
var numcol = 1; // put this to 0
function addnewschool(){
numcol++; // or move this to the end of the function
将文本输入字段命名为applied[]
,当您处理表单时,$\u 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
foreach($\u POST['applicated']作为$id=>$applicated){
$sql=“插入学院(id,学院)值($id',$applied”)”;
如果($conn2->query($sql)==TRUE){
echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn2->错误;
}
}//foreach的结尾
您不需要为每个输入添加不同的名称。只需在所有输入名称中使用applied[]
要在PHP中获取数组,只需使用$\u POST['applicated']
如果以后要使用它们中的每一个,可以使用foreach
,如
foreach ($_POST['applied'] as $value) {
// Do what you want. Retrieve the value using $value
}
或者你喜欢的任何其他方法。只需使用
applied[]
作为name
。是的,这就是我在发布这个问题之前尝试的方法。如何从将它们放在该数组中到将它们放在我的sql db表中,因为当我尝试访问数组的元素时,我遇到了一个问题,所以我尝试使用print\r($applicated)打印整个数组,但这不起作用,所以我尝试了print\r(array\u value($applicated)还有什么会超出这个问题的范围。如果遇到问题,你会想尝试一下,然后返回一个不同的问题。提示,循环数组并在循环中添加记录(foreach
是你的朋友)。使用print\r($\u POST['applicated']
for($i=0;$iquery($sql)===TRUE){echo“已成功创建新记录”}否则{echo”错误:“.$sql.”“$conn2->错误;}}不,因为这是html表单中已经存在的元素的名称。然后应用第一个添加的元素2这不会改变任何事情,所以当我这样做时,它应该像java中的高级for循环一样,循环数组中的每个元素吗?因为这只给了我第一个元素,就像以前一样。你到底在做什么?我已经知道了我试过了,它对我有效。表格是一份奖学金申请表。所以我将每个学院连同一个外键($id)一起存储在一个表中,外键引用了申请人个人信息存储的表。但是当我这样做时:foreach($_POST['applicated']as$value){echo$value;}唯一被打印出来的想法是我输入的第一所大学。我只是遗漏了什么吗?这很奇怪。我试过foreach($_POST['applicated']as$value){print$value.
“;}并且它起作用了。我能理解出了什么问题。
var numcol = 1; // put this to 0
function addnewschool(){
numcol++; // or move this to the end of the function
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
foreach ($_POST['applied'] as $value) {
// Do what you want. Retrieve the value using $value
}