【发布时间】:2009-10-07 06:42:12
【问题描述】:
这个问题可能比 SO 的平均问题要长一些,所以我会尽量缩短:
我正在设计一个用户需要填写和提交的动态表单。这个表格很庞大,有超过 500 个可能的问题。显示给用户的问题取决于先前答案中给出的答案(例如;只有当用户选中“仍在学校”复选框时,才会显示与学校相关的问题页面。)
这个表格有很多要求:
- 多个页面,可以根据给出的答案“打开或关闭”。
- 当用户返回并更改特定答案时,将关闭的已填充组需要清空其问题的答案。
- 有些问题是根据之前给出的答案预先填写的。
- 需要在每次新页面请求时将表单保存到数据库中,以便用户可以随意暂停并继续填写表单。
解决这个问题的最佳方法似乎是 OO 方法;定义一个接受多个选项(标题、要使用的输入类型、可能的答案等)的类,并相应地构建 HTML。
但是,这种方法的主要问题是,由于问题可以“借用”先前问题的信息,因此仅为要在页面上显示的问题创建一个实例是不够的。事实上,唯一可靠的方法是在每次用户加载新页面时实例化所有可能的问题。
这种方法很可能会扼杀 PHP 的性能;对我来说,这似乎不是正确的 OO 解决方案。
这个问题有更好的解决方案吗?
本质上,我需要一种快速且轻量级的方法来创建包含 500 到 1000 个记录(类实例?)的多维数组,其中大约 10 个将在任何给定时间显示在页面上。强>
我希望将表单存储为 XML 文档,因此在这方面可以很好地工作的任何方法都是首选。
【问题讨论】:
-
当您说将表单存储为 xml 时,您是指它的结果还是表单结构本身? :S
-
只是结构;答案将存储在常规数据库中。
-
OO 不是答案。不要以为 OO 可以解决任何问题。
-
小心假设性能是一个问题。如果表单的流量不高,那么它可能不是问题。话虽如此,您几乎可以肯定不需要每次都加载所有问题。