2010-04-02 9 views
2

Je suis en train de créer une enquête avec Codeigniter, et ça devient très long ... donc je veux la diviser en sections (environ 5).Formulaire en plusieurs parties dans Codeigniter

Si je veux que chaque section soit validée et que je la soumette à db après que l'utilisateur ait cliqué sur "suivant", quelle est la meilleure façon de procéder? Je n'ai jamais fait un processus en plusieurs étapes auparavant.

Un conseil pour un noob? :)

Répondre

0

CI ne possède pas de prise en charge de plusieurs pages intégrée, contrairement aux systèmes de gestion de contenu comme Drupal.

Le meilleur moyen est probablement de créer cinq formulaires distincts, chacun avec son propre tableau form_validation, sa fonction de contrôleur et sa vue. Lorsqu'un utilisateur soumet le formulaire 1 avec succès, validez le formulaire, entrez les données (partielles) dans la base de données et redirigez-les vers le second formulaire. Inclure une base de données le numéro d'identification ou votre propre transaction personnalisée numéro d'identification dans l'URL des formes suivantes afin que vous sachiez quel enregistrement vous faites référence:

http://www.mysite.com/mycontroller/form1
http://www.mysite.com/mycontroller/form2/transaction_id

documentation de CI est grande, et ce formulaire bibliothèque de validation vous obtiendra la plupart du chemin: http://codeigniter.com/user_guide/libraries/form_validation.html

4

Je ne suis pas du tout d'accord. Sauvegardez le tout en session après validation puis affichez tous les résultats sur une page de confirmation. Si l'utilisateur le confirme, enregistrez chaque champ qui a été réellement répondu dans une table de base de données pertinente.

L'idée de Summer est ouverte à des erreurs ou intentionnellement une mauvaise entrée de la part de l'utilisateur. Rien ne les empêche de mettre en signet http://www.mysite.com/mycontroller/form2/transaction_id ou de modifier intentionnellement le transaction_id. J'ai créé un formulaire multi-pages en utilisant l'idée d'été, un autre en utilisant la classe de session de codeigniter mais en stockant les sessions dans une base de données, et un autre en enregistrant chaque page dans une table de base de données. utilisateur. La dernière option est la plus robuste, mais c'est une vraie douleur. Le système de session est le meilleur.

+0

Est-ce une mauvaise idée d'utiliser des données de session comme celle-ci pour stocker environ 100 valeurs temporairement? –

+0

Je ne pense pas. Sachez simplement que les sessions sont reconstruites à chaque publication sur le serveur, ce qui peut créer des problèmes d'évolutivité si vous avez un grand nombre d'utilisateurs simultanés et un grand tableau de sessions pour chacun d'entre eux. – Kris

+0

C'est génial et tout, mais que se passe-t-il si la vue en cours de chargement provient d'un autre contrôleur? C'est-à-dire que si vous sélectionnez l'une des options x pour y arriver, alors le cadre de validation échoue ... –

Questions connexes