【问题标题】:Staged form and "going back" (clicking "back" in browser)分阶段形式和“返回”(在浏览器中单击“返回”)
【发布时间】:2012-06-28 01:25:45
【问题描述】:

我有一个非常复杂的表格,里面有多个“阶段”。

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

我担心用户按“返回”来获取以前的表单(如果他们犯了错误或其他问题)。

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

  1. 不允许人们反击。如果他们确实将它们直接发送到第一个表单以重新开始。
  2. 在请求表单页面时检查数据库。如果已经有行,则删除这些行并在用户所在的表单上重新启动用户。
  3. [潜在的 - 这会更难,因为我正在使用 codeigniter 的 form_validation 库] 当用户按下时检查数据库。获取任何当前值并将其作为默认值放入表单中。然后在提交时,删除所有行并替换为表单值。

你们是怎么做这种表格的?仅针对某些形式的逻辑量变得非常荒谬!哈哈,有没有更好的方法来做到这一点?我怀疑上面的数字 3 是最好的选择?

谢谢

【问题讨论】:

    标签: php mysql forms codeigniter


    【解决方案1】:

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

    前两个选项引起了许多问题,如果可能的话,应该避免[包括但不限于:无法纠正的错误、复杂的数据库逻辑等],但是拥有快乐用户的回报是无价的。

    希望这会有所帮助!

    梅森

    为了直观地概括用户无法返回时的想法,我添加了这张图片。

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

    【讨论】:

    • 哈哈!我希望这一切都会有一些惊人的解决方案!但显然不是……我又来了一天的编码! :p 大声笑。谢谢你的照片......让我开心! :)
    【解决方案2】:

    1 和 2 对用户体验都非常不利。 3 是您最好的选择,根据您的数据库结构,您可能能够更新而不是删除和重新插入。

    如果你有一个密钥,我假设你有,为了区分多个表单提交,你可以使用 insert on duplicate key update 之类的东西,具体取决于你的数据库引擎。

    【讨论】:

    • 是的......就像我想的那样。 :/ 呃,好吧。我会调查那个 sql,但我不完全确定 codeigniter 可以处理它。我会查明真相的。 :) 感谢您的帮助。
    猜你喜欢
    • 2016-02-05
    • 2011-04-30
    • 1970-01-01
    • 2015-05-15
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多