分阶段表单和“返回”(在浏览器中单击“返回”)

时间:2012-06-26 16:52:19

标签: php mysql forms codeigniter

我有一个非常复杂的形式,其中有多个“阶段”。

每个阶段都有用户添加无限数量行的表单。每次用户单击“继续”时,这些表单将保存到数据库(每个“阶段”在数据库中都有自己的表),并显示下一个阶段。

我担心用户按“后退”才能获得上一个表格(如果他们犯了错误或其他原因)。

我能想到解决这个问题的唯一三种方法是:

  1. 禁止人们按下。如果他们确实将他们直接发送到第一张表格再重新开始。
  2. 请求表单页面时检查数据库。如果已有行,则删除这些行,然后在他们所在的表单上再次启动用户。
  3. [潜力 - 这将变得更难,因为我正在使用codeigniter的form_validation库]当用户按下时检查数据库。获取任何当前值并将其作为默认值放入表单中。然后在提交时,删除所有行并替换为表单值。
  4. 你们是怎么做这种形式的?某种形式的逻辑数量真的很荒谬!哈哈,还有更好的办法吗?我怀疑上面的3号是最好的选择吗?

    由于

2 个答案:

答案 0 :(得分:2)

我在不同的场合使用过第三个选项,虽然根据表单的大小,这肯定会让人不知所措,更不用说我之前没有使用过CodeIgniter的验证。

如果可能的话,应该避免的前两个选项出现很多问题[包括但不限于:无法纠正的错误,毛茸茸的数据库逻辑等],但是拥有快乐用户的回报非常宝贵。

希望这有帮助!

梅森

如果用户不能回去,可以直观地总结一下用户的想法,我已将此图片包含在内。

http://momentumshift.com/wp-content/uploads/2011/05/senior_woman_using_computer_mon142089.jpg

答案 1 :(得分:1)

对于UX来说,1和2都非常糟糕。 3是您最好的选择,根据您的数据库结构,您可以更新而不是删除并重新插入。

如果您有一个密钥,我假设您这样做,为了区分多个表单提交,您可以使用类似insert on duplicate key update的内容,具体取决于您的数据库引擎。