以数组形式存储来自附加表单数据的php变量

时间:2018-10-26 14:45:34

标签: javascript php append

我创建了一个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;

但是什么也没发生。你能告诉我出什么问题了吗?

2 个答案:

答案 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
}

rtrim() documentation

但是可以使用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 .", ";
    }