【问题标题】:Passing form variables as arrays将表单变量作为数组传递
【发布时间】:2014-01-09 17:17:59
【问题描述】:

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

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

<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
            )
    )

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

【问题讨论】:

标签: php arrays forms post


【解决方案1】:

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

例如:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2021-02-07
    • 2020-09-27
    • 1970-01-01
    • 2013-02-09
    • 2018-08-05
    相关资源
    最近更新 更多