每当我要为客户准备一份长表格时,我总是想将其分成单独的页面,这样访问者就不必填写全部内容,而是分步骤填写。
就像是:
Step 1 > Step 2 > Step 3 > Thank You!
我从未这样做过,原因只有一个:我不知道如何有效地存储来自不同步骤的数据?我所说的高效是指如何存储它,以便当访问者决定不在第 3 步完成它时,所有数据都会被删除。
我想出了几种解决这个问题的方法,但我只是不相信其中的任何一个:
将表单数据存储在数据库中
我可以想象一个表格,其中的列代表每个问题,最后一列代表一个bool
值表格是否已填写?
但我必须时不时地清理表(甚至可能每次用新数据更新时?)并删除所有条目complete = 0
.
将表单数据存储在会话数据中。
另一方面,不必将数据存储在数据库中(取决于会话的处理方式),并且所有信息都将存储在 Cookie 中。但是,如果浏览器不支持 cookie 或用户禁用了它们(很少见,但会发生),或者表单包含文件附件,那么这是不行的。
echo
'ing 上一页的表单数据为<input type="hidden">
在下一页
是的,我知道这是一个相当愚蠢的想法,但它是一种替代方案。可怜,但确实如此。
Option 1
似乎是最好的,但我觉得没有必要将临时数据存储在数据库中。如果这成为一种非常受欢迎的表格,有很多访问者填写,该怎么办?更新/删除的数量可能很大?
我想知道你是如何处理的。
Edit
大卫问了一个很好的问题。我正在使用什么技术?
我个人使用 PHP+MySQL,但我觉得这是一个更通用的问题。无论您使用哪种服务器端技术,请分享您的解决方案,因为我确信该概念可以以一种或另一种方式适应不同的技术。
我认为选项 1 和 2 之间的选择取决于您要存储的数据量。我认为在大多数情况下,您在表单上收集的数据量将相当小(几千字节)。在这种情况下,我认为将其存储在会话数据中是正确的方法。来回传递这么多数据并没有太多开销。此外,除非您的用户所在的计算机具有严格的安全策略,否则该应用程序应该可以运行。如果您明确页面要求,用户可以决定是否继续。
如果您要存储大量表单数据,那么数据库会更好,这样您就不需要来回传递数据。不过,我认为这种情况相当罕见。即使应用程序允许上传文件,您也可以将这些文件保存到临时位置,并且仅在表单完成后将它们写入数据库。您可能想要使用数据库的另一种情况是,如果您的表单需要能够支持用户离开并稍后返回以恢复表单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)