首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >提交表单时,使用javascript生成的HTML文本输入标记不会发布

提交表单时,使用javascript生成的HTML文本输入标记不会发布
EN

Stack Overflow用户
提问于 2018-06-13 02:50:12
回答 3查看 51关注 0票数 0

我有一个表单,要求提供就业历史,你在哪里申请过大学等。例如,对于他们申请的大学,我首先有一个文本框,下面有一个按钮,调用javascript函数在它下面添加另一个文本输入。当我第一次制作这个表单时,我是用几个不同的数据片段来做的,一旦它们被提交,我就会从$_POST获取它们,并将它们放入数组中,然后将该数组的每个元素添加到我的db中的相应表中。但是,突然之间,我不能再提交我的表单,我收到一条消息,告诉我我试图获取一个未指定的索引。但是,当我在浏览器中检查文本输入时,它们的名称是正确的。我读到我应该将它们命名为college[],以便它们都进入一个数组中,但这也不起作用……这次又是什么?

js:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
$applied = array();
foreach($_POST['applied'] as $value){
  array_push($applied, $value);
}

更新:好的,我把它改成了另一种方式,但那不起作用,所以我决定只复制它的一个早期版本,然后粘贴到正确的布局中。这很有效..。所以现在它被修复了,我继续添加它。我给一些标签添加了"required“,稍微改变了一些样式,还稍微修改了我的javascript文件。但现在我遇到了和以前一样的问题。我所有的POST数组都只有第一个值。我能添加什么来改变这一点呢?有没有人遇到过这样的问题?

EN

回答 3

Stack Overflow用户

发布于 2018-06-13 02:53:53

您的第一个附加输入应该具有索引"applied1",而不是"applied2“

请看:

代码语言:javascript
复制
var numcol = 1; // put this to 0
function addnewschool(){
numcol++; // or move this to the end of the function
票数 0
EN

Stack Overflow用户

发布于 2018-06-13 02:54:08

将您的文本输入字段命名为applied[],在处理表单时,$_POST['applied']的post值将是一个已填充的数组,其中包含已完成的条目数量。

要将数据放入表中,请执行以下操作:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2018-06-13 03:08:09

您不需要为每个输入添加不同的名称。只要在所有输入名称中使用applied[]即可。

要在PHP中获得数组,只需使用$_POST['applied']

如果你想在以后使用它们,你可以使用foreach,比如

代码语言:javascript
复制
foreach ($_POST['applied'] as $value) {
    // Do what you want. Retrieve the value using $value
}

或者任何其他你喜欢的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50823935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档