我有一个多步骤的表单,我分布在4个单独的页面中 - 换句话说,4个部分(我选择了这个方法,因为它太复杂了,无法在一个页面上处理我的所有字段)。在我的MySQL数据库中,每个页面的每个部分都有一个表格(step1
,step2
,step3
,step4
)。提交第一页后,我想将我的Page1数据插入数据库并让它返回主键,然后我打算将其发布到下一页(step2.php
)...同样的过程将跟随对于Step3和Step4。
DB中Step2,Step3和Step4的表都有一个主键(reg_id
),它们也是step1.reg_id
的所有外键。
我想就如何:
提出一些意见/建议reg_id
传递给下一步页面我使用普通和简单的PDO来获取MySQL中的数据。我承认我没有很多PHP知识来实现这一点,因为我已经习惯了ASP.NET webforms开发的生命周期,因此我在这里要求你的专业知识。
一如既往地赞赏!
答案 0 :(得分:2)
正如Karl在评论中所说,在重定向到下一页之前将表单值保存为$ _SESSION值是最有意义的。表单处理器然后访问$ _SESSION中的值,就像您将它们作为$ _POST值发送一样。
为了扩展为什么这有点好一点,你必须考虑如果你的用户不只是从第1页到第2页到最后会发生什么一次坐下的形式如果有人在中途离开巫师怎么办?如果他们需要返回并编辑值,有时多次?简而言之,如果您的用户的工作流程导致表单不完整或者用户在表单页面之间来回切换,那么最终可能会进行大量不必要的验证并写入数据库。
如果您在会话中保存表单值并且仅在用户完成整个多页表单时将它们存储在数据库中,则可以消除对数据库进行这些不必要写入的可能性。
它还使人们可以轻松地在表单中向后进行编辑而不会破坏您已经指出的验证,这有点复杂。防爆。假设第1页上的值x与第4页上的值y相关。用户一直到第5页,但随后决定他们要返回第1页来编辑x。第1页可以访问会话,因此可以访问x和y - 例如,您可以警告他们新的x值是否会使y无效,或者沿着这些行进行某些操作。
答案 1 :(得分:0)
你可以有5个单独的页面,并在它们之间传递数据。
Page1.php将具有初始形式但不进行处理,它将所有数据发布到page2 onSubmit。
Page2.php将从page1.php检索所有发布数据,存储到数据库中,并检索其ID,然后显示向导第二阶段的表单。此表单onSubmit将ID(在隐藏字段中)和表单元素发送到page3.php
Page3.php存储来自page2.php的帖子数据,检索ID并显示下一个表单。再次提交隐藏的ID和表单字段,这次是page4.php
您可以像在向导中执行的步骤一样多次重复此步骤。
另一种方法是将它全部放在一个页面中。将有几个if语句,用于读取已发送的数据。隐藏字段将跟踪当前步骤。即
如果$ step == 1,则显示第一个表格(onsubmit发送$ step = 2作为隐藏字段)
如果$ step == 2从第一个表单中检索发布数据并插入到DB然后显示第二个表单(onsubmit send $ step = 3 as hidden field)
如果$ step == 3从前一个表单中检索发布数据并插入到DB然后显示第二个表单(onsubmit send $ step = 4 as hidden field)
等等