我正在建立一个带有Codeigniter的调查,而且它变得非常冗长......所以我想把它分成几个部分(大约5个)。
如果我想让每个部分都验证,并在用户点击“下一步”后提交给db,那么最好的方法是什么?我以前从未做过多步骤的过程。
对菜鸟有什么建议吗? :)
答案 0 :(得分:4)
我完全不同意。验证后将整个事物保存在会话中,然后在确认页面上显示所有结果。如果用户确认,则将实际应答的每个字段保存在相关的数据库表中。
夏天的想法是对用户的错误或故意的错误输入开放。没有什么可以阻止他们为http://www.mysite.com/mycontroller/form2/transaction_id添加书签或故意更改transaction_id。
我现在使用summer的想法构建了一个多页面表单,另一个使用codeigniter的会话类但是将会话存储在数据库中,另一个使用登录系统跟踪用户。最后一个选项是最强大的,但是真的很痛苦。会话系统是最好的。
答案 1 :(得分:0)
CI没有像Drupal这样的内容管理系统支持的内置多页表单支持。
最好的方法可能是创建五个单独的表单,每个表单都有自己的form_validation数组,控制器函数和视图。当用户成功提交表单1时,验证表单,将(部分)数据输入数据库,然后重定向到第二个表单。在后续表单的URL中包含数据库ID号或您自己的自定义事务ID号,以便您知道您所指的是哪条记录:
http://www.mysite.com/mycontroller/form1
http://www.mysite.com/mycontroller/form2/transaction_id
CI的文档很棒,这个表单验证库可以帮助您完成大部分工作:http://codeigniter.com/user_guide/libraries/form_validation.html