将表单变量作为数组传递

时间:2014-01-09 17:18:00

标签: php arrays forms post

我正在构建一个多页表单,我想在进程的最后提交到数据库,所以放弃的表单最终不会乱丢垃圾记录的数据,所以我最初的想法是解决这个问题是将已经提交的数据保存在一个数组中(几乎与我从数据库中选择它的格式相同),但我似乎变得非常困惑并最终得到嵌套数组而不是在调试时得到我期望的结果。

因此,例如,第一个表单看起来像这样:

<form action="step_2.php" method="post">
    <input type="text" name="textfield1">
    <input type="text" name="textfield2">
    <input type="text" name="options[]">
</form>

(数组字段的原因是因为用户可以以编程方式添加其他字段,所以虽然'textfield1'和'textfield2'只有一个值,'options'应该作为数组提交。

我想要做的只是抓住$ _POST数组并将其添加到下一个字段,如下所示:

<form action="step_3.php" method="post">
    <input type="hidden" name="form1[]" value="<?=$_POST?>">
    <input type="text" name="textfield3">
    <input type="text" name="options2[]">
</form>

但这似乎不起作用。理想情况下,我想结束表单的最后一步,或者使用每个表单的数组,或者以合理的方式组织单个数组,例如;

[0] => Array
    (
        [textfield1] => Some Text
        [textfield2] => More Text
        [textfield3] => Yet More Text
        [options1] => Array
            (
                [0] => Option A
                [1] => Option B
            )
        [options2] => Array
            (
                [0] => Option E
            )
    )

我假设有一种更简单的方法可以做到这一点,但目前我的大脑正转向粘性试图在其周围包裹突触。

1 个答案:

答案 0 :(得分:1)

考虑将表单数据保存在$_SESSION变量中,这样就不会在页面加载之间来回传递它。

例如:

if( !isset($_SESSION['formdata'])) $_SESSION['formdata'] = array();
// to add current form data to the array:
$_SESSION['formdata'] = array_merge($_SESSION['formdata'],$_POST);

如果用户点击“返回”按钮并重新提交表单的早期部分(它将覆盖以前保存的值),这还有额外的好处,仍然正常工作