【问题标题】:Form table based on previous inputs基于先前输入的表格
【发布时间】:2012-07-23 14:21:44
【问题描述】:

我是 PHP 新手,遇到了一个我似乎找不到答案的问题。

我必须创建一个跨多个页面的活动创建表单。在一个页面上,有一个表格,该表格在垂直方向上将仅列出在前一页上选择的票证类型,而在水平方向上,还有一个基于前一页的“部分”列。然后,该表格将允许用户输入价格,然后根据不同的部分将其分配给票证类型。

我的问题是,是否可以单独使用 html/PHP 来做到这一点?我正在使用 POST 方法在表单的页面之间移动,然后在最后将其全部添加到数据库中,但我应该用不同的方式来实现这一点吗?

我希望这个问题是有道理的,但我来自非行话立场。

【问题讨论】:

    标签: php html sql forms


    【解决方案1】:

    有几种方法可以采取:

    1. 按照您的描述使用 POST 方法。
    2. 使用会话变量跨页面存储数据。
    3. 使用 jQuery/javascript 在一个页面上隐藏/显示不同的表单(无需在会话中多次 POST 或存储数据)。

    【讨论】:

      【解决方案2】:

      您可以做的(不一定应该,这是您自己的判断调用)是将所有POSTed 数据保存为会话变量。这可以帮助您清理代码混乱,否则您将不得不 POST 将所有表单中的所有数据发送到所有表单,以便通过所有页面导航维护信息。

      【讨论】:

        【解决方案3】:

        只要第一页有一个带有 POST 的表单方法,就可以做到这一点。 步骤如下:

        1. 在第一页,用户将通过 POST 方法提交数据。
        2. 在第二页上,将数据保存在一个临时变量中,如下所示:$temp_var = $_POST['data'];
        3. 使用基于第一页的数据创建第二页。
        4. (提交时)将新数据与旧数据一起保存到数据库中

        【讨论】:

          【解决方案4】:

          这听起来像是 sessions 的好案例!

          在您的第一页上,您的表单可以使用 POST 提交,然后您可以将数据存储在用户的会话中:

          session_start();
          $_SESSION['form_submission'] = $_POST;
          

          然后,在第 2 页(或任何其他页面)上,您可以通过以下方式访问它:

          session_start();
          $form_variable = $_SESSION['form_submission']['field_name'];
          

          您可以更一般地存储/检索它们以使其更具可读性:

          $_SESSION['field1'] = $_POST['field1'];
          $field1 = $_SESSION['field1'];
          

          【讨论】:

          • 我碰壁了。我在每个页面的开头添加会话开始代码,但在第二页上,我尝试使用 $venueName = $_POST['venue_name']; 将一些发布的信息添加到 var在 但在下一页我不能。
          • 这是预期行为。您需要在要使用它们的任何/每个页面上重新声明变量。因此,如果您想在第 2 页上使用 $venueName,请在第 2 页上声明它。如果您也想在第 3 页上显示它,您还必须在第 3 页上声明它。
          • 目前我将其设为 $_SESSION['venue_name'] = $_POST['venue_name']; $venueName = $_SESSION['venue_name'];因为不使用 $_POST 它不起作用。与仅仅说 $venueName = $_POST['venue_name']; 相比,优势在哪里? ?
          • @user1546076 当您需要访问不同页面上的值时,可以看到优势。 $venueName = $_POST['venue_name']; 绝对可以正常工作,当且仅当在当前页面上发布表单时。如果您想访问当前未发布到的不同页面上的值,将值存储在会话中是一个很大的好处。
          • 我认为这是让我感到困惑的一点。由于我有一个拆分为多个页面的表单,因此我需要将信息沿着它移动,以便在最后处理它。但要做到这一点,我是否必须使用 $_SESSION 沿表单的每一页设置它,就像使用 $_POST 时一样?
          【解决方案5】:

          PHP 和 HTML 可以很好地管理您心目中的系统。

          让您开始:

          PHP 使用会话来管理从一个页面到下一个页面的数据,创建如下流程:

          1. 用户填写第一个表单
          2. 向 Web 服务器发送带有数据的 POST 请求
          3. PHP 脚本解释数据并在页面上创建新视图或重定向到另一个页面。

          在您使用的每个页面顶部的 PHP 脚本中:

          session_start();
          

          您现在可以将数据保存到会话中:

          $_SESSION['mySessionVar'] = 'This is my session variable';
          

          当您需要从会话中检索时,请确保 a) session_start() 已被调用并且 b) 像这样检索它:

          $myVariable = $_SESSION['mySessionVar'];
          

          希望对您有所帮助。

          【讨论】:

          • 我明白了一点,但不确定我应该如何将它添加到每一页。在这一点上,我使用以下方式存储每个条目:
          • 因为您是 PHP 新手,请尝试将其添加到您打开第一个 PHP 标签的每个页面的顶部:<?php session_start(); ...
          • 这样你就可以在页面的任何位置使用$_SESSION。
          • 我碰壁了。我在每个页面的开头添加会话开始代码,但在第二页上,我尝试使用 $venueName = $_POST['venue_name']; 将一些发布的信息添加到 var在 但在下一页我不能。
          • 那么您是否确保首先将您的 var 保存到会话中? $_SESSION['venueName'] = $venueNAme,然后当你再次需要它时:$venueName = $_SESSION['venueName'];
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-04
          • 2020-03-20
          • 2013-06-29
          • 2020-11-03
          • 1970-01-01
          • 2022-10-02
          • 1970-01-01
          相关资源
          最近更新 更多