如何跨多个表单访问$ _POST数据

时间:2014-11-05 19:52:23

标签: php forms

对于我正在上课的购物车应用程序,我必须在每个步骤中显示信息。我的问题是我只能显示上一步的信息。对于步骤1,从单选框中选择一个项目。然后将其存储为:

        function processStep1() {
            //Implemented sessions
            $_SESSION["items"] = $_POST["items"];
            displayStep2();
        }

步骤2询问数量然后验证它,如下所示:

        function processStep2() {
            //Implemented sessions
            $_SESSION["quantity"] = $_POST["quantity"];
            if ( preg_match('/^\d+$/',$_POST["quantity"]) ) {
            displayStep3();
            } else {
            echo "ERROR: Quantity entered was invalid. Please try again.";
            displayStep1();
          }
        }

(顺便说一句,当输入不是整数时,我似乎无法刷新当前步骤(这将是displayStep2),因为每次我尝试这样做时都会出错如果有人对这个原因有答案,那就更有帮助了。)

但是在表单的第3步,我尝试运行以下行:

            <p>You have selected <?php echo $_POST["quantity"] ?> units of the <?php echo $_POST["items"] ?>.<p>

每次都会响应错误。我已经尝试了同样输出的各种配置,并确定它将始终解析$ _POST [&#34;数量&#34;],但绝不会解析$ _POST [&#34; items&#34;]。我需要它来做两件事。

1 个答案:

答案 0 :(得分:2)

你的第三张表格没有&#34;见&#34; $ _POST [&#39; items&#39;]因为它未提交给该表单。您将其存储在会话中。在您的第三个表单上开始一个新会话并请求$ _SESSION [&#39; items&#39;]。

第1步

<form name="step1" method="post" action="whateverPageContaintsProcessStep1.php">
    <input type="radio" name="items" value="item1">Item 1
    <input type="radio" name="items" value="item2">Item 2
</form>

当我们提交表单时,将要发送的$ _POST数据将是我们选择的单选按钮的值。

第2步

<form name="step2" method="post" action="whateverPageContaintsProcessStep2.php">
    <input type="number" name="quantity" value="0" />
</form>

当我们提交form2时,$ _POST数据将包含名为quantity的文本框的值,但是由于此表单不包含先前的单选按钮,因此该值不会发送到服务器,因此我们将无法访问它在&#39; whateverPageContaintsProcessStep2.php&#39;。