繁体   English   中英

创建带有会话的多页PHP表单

[英]Creating a multi-page PHP form with sessions

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

我正是使用250个问题的心理测试系统来做到这一点的。 一旦您考虑了一下,这并不是很难。 我使用的解决方案是在堆叠的div中输出,而不用担心制作单独的页面并发布到会话上-它更干净。 提交按钮位于每个div上,但仅在最后一个div上提交-函数显示下一个div并在其他“页面”中单击时隐藏当前div。 使用变量和PHP数学,我可以将测试设置为不同的组合,例如1页250页,5页50页等。最困难的逻辑是使用适当数量的问题来构建页面并进行确保div的标题有效,可以与您的显示/隐藏脚本一起使用。 就我而言,我使用Jquery的显示/隐藏功能。 奇迹般有效。

因为此解决方案使用一页,所以您不必担心值来回移动时会“忘记”值。 就我而言,我什至不允许用户返回,因为我没有给他们提供任何用户界面。 在浏览器上单击鼠标左键会警告他们,他们将离开页面。 但是,您可以使用几种不同的方法来允许它们返回,包括按钮之类的UI,或使用浏览器的后退按钮设置后退功能。 一个巨大的附带好处是,加载几乎是零,并且页面更改对于用户而言是即时的。

听起来像是经典的“向导”界面。 快速谷歌搜索提出了这一点,但我不确定是否有什么好处。

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

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

如果您倾向于采用“在末尾插入”的方法,那么我建议bpeterson76的想法是使用JS在单一的实体形式上显示/隐藏部分-只需确保您可以控制用户的后退按钮,否则,用户可能会放弃所有答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM