我创建了一个php表单,该表单会附加新的文本变量,如下所示:
<form action="" enctype=”multipart/form-data” method="post" action="<?php echo $_SERVER['REQUEST_URI'];?>">
<div id="div">
value <input type="text" name="tst" >
<button onclick ="appendRow()" value="Add Row">Add Row</button>
<input type="submit" value="test" name="submit" >
</div>
</form>
我向其中添加了以下Java脚本:
<script>
var x=1
function appendRow()
{
var d = document.getElementById('div');
d.innerHTML += "<input type='text' name='tst"+ x++ +"'><br >";
}
</script>
现在,我想存储从表单中获取的所有变量,并将其用于进一步的计算。我为此尝试了for每个循环:
if (isset($_POST['submit']) && is_array($_POST['submit'] == "test")) {
foreach($_POST["submit"] as $key => $tst){
$capture_field_vals .= $tst .", ";
}
echo $capture_field_vals;
但是什么也没发生。你能告诉我出什么问题了吗?
答案 0 :(得分:2)
首先,从表单中删除action
属性。
<form enctype="multipart/form-data" method="post">
...
</form>
不支持具有多个表单操作,并且如果未提供任何操作(默认情况下),表单将张贴到提交表单的同一页面。
接下来,将您的表单name='tst'
提交为数组,如下所示:
<input type="text" name="tst[]"/>
在您的JavaScript中,执行相同操作:
d.innerHTML += '<input type="text" name="tst[]"/><br>';
(您不需要x
变量),(input arrays
)
现在,在您的PHP中,您可以遍历所有提交的tst
值。
if (isset($_POST['submit'])) {
foreach($_POST['tst'] as $tst){
$capture_field_vals .= $tst .", ";
}
echo rtrim($capture_field_vals, ','); //rtrim will remove trailing comma
}
但是可以使用implode()
进一步简化。
if(isset($_POST['submit'])) {
echo implode(', ', $_POST['tst']);
}
答案 1 :(得分:0)
您的循环似乎是错误的。 $_POST['submit']
没什么可循环的,它只是一个值。实际的数组是$_POST
。
foreach($_POST["submit"] as $key => $tst){
$capture_field_vals .= $tst .", ";
}
尝试一下:
foreach($_POST as $key => $tst){
$capture_field_vals .= $tst .", ";
}