【问题标题】:Multi-Page form submitted to single row - PHP MYSQL多页表单提交到单行 - PHP MYSQL
【发布时间】:2013-06-03 03:03:47
【问题描述】:

我有一个当前的项目,但遇到了一些麻烦。它将用 PHP / MySQL 编写

它是一个多页表单(3 页)

当用户单击“下一页”(提交按钮)时,数据需要存储在数据库中,并且需要打开下一页,同样的事情会发生(当“下一页”时,该数据也存储在数据库中) ' 被点击,然后在最后一页再次发生同样的事情。我知道一种可以在最后一页上提交所有数据的方法,但我们不希望这样。我们需要捕获每一步,无论他们是否完成填写是否完整。

我的问题是,如何确保所有数据都插入到同一行(在同一个自动递增 ID 下)?

我在 PHP/MySQL 方面没有最丰富的经验,所以请放轻松;)

提前致谢:)

【问题讨论】:

  • 在第一次插入时启动会话,并将数据库行 ID 放入会话中并在下一次插入时使用它

标签: php mysql forms


【解决方案1】:

这是一种方式:

在第一页,您需要放置数据库所需的所有信息(主键/索引键)。然后你可以做你的INSERT INTO数据库。

然后,您可以使用您拥有的强制性信息获取新插入行的 ID,并带有 SELECT id FROM my_table WHERE mandatory_information_is_same。将其保存在 $_SESSION 变量或表单中的隐藏字段中(不安全)。

然后在每个新页面上,您只需输入UPDATE my_table SET extra_information WHERE id=$_SESSION['row_id'],就完成了。

【讨论】:

    【解决方案2】:

    您可以做的是将表单数据存储在会话中。例如,用户输入详细信息并单击下一步按钮,将数据存储在会话中

    session_start();
    $_SESSION['firstpage']['fname'] = $_POST['fname'];
    $_SESSION['firstpage']['lname'] = $_POST['lname'];
    $_SESSION['firstpage']['username'] = $_POST['username'];
    
    //check if data for first page stored
    
    if(!empty($_SESSION['firstpage'])){
        //redirect to second page
    }else{
        //stay on first page
    }
    

    对第二页做同样的事情。

    第三页

    session_start();
    $_SESSION['thirdpage']['address'] = $_POST['address'];
    $_SESSION['thirdpage']['confirm_id'] = $_POST['confirm_id'];
    
    
    //check if data for Third page stored
    
    if(!empty($_SESSION['thirdpage'])){
        //do validation for first and second page 
        //insert all session data to DB with same auto increment id
    }else{
        //stay on third page
    }
    

    使用会话的原因是为了保存数据,并且存储的数据也可以在将来使用。用户可以离开并稍后继续。如果您想使用sessionscookies,这是您的选择,但它们都做几乎相同的事情,唯一的区别是会话数据存储在服务器中,cookie 存储在浏览器中。您可以在第三页上进行很多验证。

    希望这会有所帮助。

    【讨论】:

    • 您好 Avinesh,非常感谢!虽然这不是只将变量存储在每个页面上,而不是实际将它们存储在每个页面的数据库中吗?
    • 数据将全局存储,您只需将数据插入到第三页中的数据库中。
    • 啊,好的,谢谢,但我正在寻找一种解决方案,将每个页面插入到数据库中(第 1 页完成,插入到数据库:第 2 页完成,插入到数据库等) ) 但都使用相同的 ID。这可能吗?
    • 哦,是的,您仍然可以使用会话,因此在第 1 页插入数据库,get last inserted id 并将其作为$_SESSION['id'] = $id; 存储在会话中,并使用存储在会话中的此 id($_SESSION['id'])在其他 2 页。 php and last inserted id,你也可以使用本站提供的例子。
    • 太棒了,我现在完全明白你的意思了 :) - 我认为这是这样做的,只是想确保 :) - 谢谢大家!
    猜你喜欢
    • 2022-01-12
    • 2016-12-08
    • 2010-10-30
    • 2016-12-05
    • 2013-10-22
    • 2014-05-25
    • 2019-05-09
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多