使用会话创建多页PHP表单

时间:2010-10-13 18:49:55

标签: php javascript forms session-cookies multipage

我需要使用PHP / MySQL创建一个非常广泛的表单,其中包含许多条件逻辑,最终以提交到MySQL数据库结束。所以基本上用户使用单选按钮做出他们的第一选择(必须是因为他们“选择”图片)然后根据该提交被带到表单的下一个“页面”。该提交还必须存储在会话或cookie中,因为在表单的最后我将收集他们的所有输入并在数据库中填充一行。我的方法应该是什么?现在我正在编写将POST数据存储在SESSION中的表单,然后在最后填充数据库行,但是一旦我在页面之间引入条件逻辑,会话就会中断并且不会被发送。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

我用250问题心理测试系统完成了这个。一旦你想到它,它并不太难。我使用的解决方案是在堆叠的div中输出,而不是担心单独的页面和发布到会话 - 它更干净。提交按钮存在于每个div上,但它只在最后一个div上提交 - 一个函数显示下一个div并在每个其他“页面”点击时隐藏当前div。使用变量和PHP数学,我可以将测试设置为不同的组合 - 例如250页的1页,50页的50页等。你最困难的逻辑是用适当数量的问题构建页面并制作确保div有效地标题为与您的show / hide脚本一起使用。在我的例子中,我使用了Jquery的显示/隐藏功能。像魅力一样。

由于此解决方案使用一个页面,因此您无需担心值会在返回时被“遗忘”。在我的情况下,我甚至不允许用户返回,因为我没有给他们任何UI这样做。在浏览器上单击后会向他们发出警告,告知他们将离开页面。但是,您可以使用几种不同的方法来允许它们返回包括UI(如按钮)或使用浏览器的后退按钮设置后退功能。一个巨大的附带好处是加载几乎没有,并且页面更改对用户来说是即时的。

答案 1 :(得分:2)

听起来像一个经典的“向导”界面。一个快速的谷歌搜索带来了这个,但我不确定它是否有任何好处。

http://www.phpclasses.org/browse/file/8308.html

答案 2 :(得分:1)

在向导结束时将所有数据保存到单个更新的优点是简单。在每个步骤之后写入数据库的优点是用户可以在以后返回并完成向导 - 您不依赖于当前用户会话。

如果您倾向于使用“最后插入”方法,我建议使用bpeterson76的想法,使用JS来显示/隐藏单个物理形式的部分 - 只需确保您已控制用户的后退按钮,否则用户可能会失去所有答案。