Reputation: 12650
I'm building a survey w/ Codeigniter, and it's getting cumbersomely long...so I want to split it up into sections (about 5).
If I want each section to validate, and submit to db after the user clicks "next", what is the best way to do this? I've never made a multi-step process before.
Any advice for a noob? :)
Upvotes: 2
Views: 2726
Reputation: 41
I totally disagree. Save the whole thing in session after validation and then display all the results on a confirmation page. If the user confirms it, then save each field that was actually answered in a relevant database table.
Summer's idea is open to errors or intentional bad input from the user. There is nothing to prevent them from bookmarking http://www.mysite.com/mycontroller/form2/transaction_id or intentionally changing the transaction_id.
I've built one multi-page form now using summer's idea, another using codeigniter's session class but storing the sessions in a database, and another one saving each page to a database table but using a log in system to track the user. The last option is the most robust, but is a real pain. The session system is best.
Upvotes: 4
Reputation: 2498
CI doesn't have built-in multi-page form support the way content management systems like Drupal do.
The best way is probably to create five separate forms, each with its own form_validation array, controller function, and view. When a user successfully submits form 1, validate the form, enter the (partial) data into the database, and redirect to the second form. Include a database ID number or your own custom transaction ID number in the URL of subsequent forms so that you know which record you're referring to:
http://www.mysite.com/mycontroller/form1
http://www.mysite.com/mycontroller/form2/transaction_id
CI's documentation is great, and this form validation library will get you most of the way there: http://codeigniter.com/user_guide/libraries/form_validation.html
Upvotes: 0