2010-11-26 4 views
1

Salut à tous. J'ai un projet qui nécessitera l'entrée de l'utilisateur de n'importe où de 100 à 500 champs de saisie de formulaire qui seront ensuite saisis dans une table de base de données. J'ai besoin de conseils sur la meilleure méthode pour gérer autant de champs.Quel est le meilleur moyen de gérer un formulaire avec plus de 100 champs d'entrée?

Vaut-il mieux que l'utilisateur entre 10 à la fois dans la base de données, puis demander, "Souhaitez-vous entrer plus de données?" puis mettez à jour la table avec les entrées ajoutées?

ou

ce que je pourrais tenir un tableau d'entrée dans une session alors que l'utilisateur entre 10 successivement et ensuite tous les champs entrés dans la base de données à la fois?

Merci pour les réponses.

+1

Wh ... wow, c'est beaucoup de forme ... –

Répondre

2

Je disposerais d'une sorte d'interface "wizard" pour entrer les données, en stockant les pages dans la session au fur et à mesure que l'utilisateur avance. Alors oui, votre dernière idée est saine.

+0

Alors PHP et MySQL n'auraient aucun problème à gérer 500 entrées de données à la fois? – Tableking

+0

Et une autre question rapide. Devrais-je rendre l'entrée de l'utilisateur "sûre" avant qu'elle ne soit ajoutée à la session ou avant que les données ne soient ajoutées à la base de données? Merci pour vos réponses. – Tableking

+0

Il ne devrait y avoir aucun problème à mettre autant de choses dans une session PHP, mais si vous avez 500 champs dans une seule table MySQL, vous avez de sérieux problèmes architecturaux. –

0

bien, mis à part la question de savoir quand sauvegarder les données, pour les grandes formes comme celle-ci, j'aime doubler les étiquettes d'entrée avec une étiquette d'entrée cachée correspondante. Par exemple, <input name='test' > I will also create <input type='hidden' name='test-orig' value='orig-value' /> puis sur le serveur, je vais comparer l'étiquette d'entrée de formulaire avec l'original caché et voir si les données ont été modifiées. Cela vous permettra de continuer à faire INSERT/UPDATE uniquement sur les éléments de données qui ont changé et non sur INSERT/UPDATE pour chaque valeur unique.

De même, assurez-vous d'étudier la syntaxe ON DUPLICATE KEY UPDATE parce que c'est tellement utile. Assurez-vous de normaliser vos tables de base de données et de ne mettre à jour que les éléments de données qui ont été modifiés.

Pour une forme de cette taille, au lieu de stocker les données dans la session de PHP j'enregistrer directement à la base de données dans des blocs logiques, cela permet de garder l'utilisateur de perdre leurs informations en cas de leur temps de session out (qui pourrait arriver si la forme est énorme). Ajoutez ensuite un indicateur d'enregistrement en attente à la structure de votre table pour déterminer quand un utilisateur a enregistré l'ensemble de l'enregistrement par rapport à une sauvegarde partielle.

0

Attention, les solutions de durcissement commun pour php, par exemple suhosin, limitent le nombre de variables post-nombre maximum. C'est commun dans les hébergements partagés, et peut échouer en silence.

Aussi, pensez à utiliser la syntaxe de tableau pour les variables post ..

par exemple. les entrées avec des noms tels que: "user []" rempliront la variable $ _POST en tant que tableau.

Questions connexes