Création de formulaire sur plusieurs pages

Résolu
nico971gwada Messages postés 28 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 29 mai 2007 - 19 juil. 2006 à 17:18
mayak2005 Messages postés 6 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 5 janvier 2008 - 24 oct. 2007 à 23:58
Salut,
Je suis débutant en php et pour mon stage, je dois créer un formulaire.
Le problème c'est que ce formulaire est énorme et doit donc tenir sur plusieurs pages avec à la fin de chaque page un bouton "suivant" (servant uniquement à naviguer) et en toute fin de questionnaire un bouton "fin" (qui enverrait toutes les infos dans la base de donnée).
Je ne sais pas trop comment faire pour garder mes variables au cours de la navigation.

Sinon un autre truc qui n'a rien à voir ou presque. J'ai rentré toutes les réponses possibles aux questions de mon questionnaire dans une table et j'ai vu que j'en avais oublié une au milieu de mon questionnaire. Comment faire pour l'insérer au bon endroit (décalage des id des réponses suivantes)?  En gros, est-ce que le fait de définir une clé primaire sur mon id suffit à ce que quand j'ajoute une ligne à un id existant, toutes les lignes suivantes sont automatiquement décallées?

Merci d'avance.

9 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 juil. 2006 à 09:57
Hello,

tu n'es pas forcé de logger les gens dans la db. En effet, en session, tu stockes si tu veux l'id du questionnaire dans ta base. Il reste anonyme, on s'en fiche de ça. Tu update un questionnaire, pas une personne.
La méthode que tu décris est tout à fait faisable, oui. Mais, tjrs, je ferais de l'update partiel...ds la db. Sinon, tu peux effectivement tout conserver en session. Et réafficher en fonction de la "page" sur laquelle tu te trouves, les valeurs de ta session.
3
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
19 juil. 2006 à 17:35
Salut,

il faut que tu utilises les sessions pour conserver tes variables d'une page à l'autre.
Amateur dans le domaine bdd, je préfère laisser quelqu'un d'autre te répondre.
Bonne chance.
0
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
19 juil. 2006 à 18:43
Pourrais tu nous donner la structure et les données de ta table,
afin d'espéré pouvoir t'aider.... ;)
0
nico971gwada Messages postés 28 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 29 mai 2007
20 juil. 2006 à 11:06
Merci DiGhan. En fait j'avais déjà lu sur le net que l'on pouvait utiliser des sessions mais j'avais aussi vu que ce n'était pas très "propre" mais bon vu que je débute on va choisir la solution de la facilité.


Sinon, pour ma table, elle a 4 champs :
   - idReponsePossible(int) que j'ai mis en clé index avec auto-increment
   - idQuestion(int)
   - libelle(varchar)
   - sujet(varchar)

En fait j'avais sauté une ReponsePossible qui devait être à la 38eme place (j'avais 40 réponses enregistrées dans ma table). Je pensais qu'en l'insérant à l'idReponsePossible 38, il y aurait un décalage des réponses suivantes mais ça m'a mis deux ReponsePossible  au numéro 38. Ensuite j'ai mis idReponsePossible en primaire pensant qu'il réorganiserait tout ça et non ça ma supprimé une des 2 entrées à la 38eme place. Résultat j'ai du supprimer toute les ReponsePossible de la 38 eme à la 40 eme (heureusement qu'il n'y en avait pas trop) pour ajouter celle qui me manquait et enfin remmetre les autres par dessus.

Alors mon problème c'est qu'après je laisserai cette base de donnée à des gens encore moins doués que moi avec les bdd. Donc est-ce que je m'y prend comme un manchot(je crois bien) ou est-ce qu'il y a un moyen d'insérer des lignes oubliées sans probleme.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 juil. 2006 à 13:53
Hello :
1 - ça va être difficile sans session...j'ai bien une solution, mais on va encore dire que je fais du favoritisme ;-) : j'enregistrerais, moi, les données des formulaire dans un fichier XML, en fait. Ainsi, on perlet des retour en arrière pour modifier un champ mal renseigné...puis à la fin, on valide, et le traitement lit le fichier xml et l'insère dans la bdd.
Tu peux AUSSI insérer tes données au fur et à mesure ? page 1 : hop, on insère, et on passe à page2 l'id de la ligne insérée. Page 2 : on UPDATE la ligne dont on a l'id.

2 - là encore, il te faut des id : quand tu renseignes tes coordonnées sur un site...tu peux ausi les modifier, non ? Pour ça, que font-ils ? Bah, déjà, tu te loggues, là, ils récupèrent ton ID (dans la bdd : ta ligne dans la table, quoi). Puis ils font : UPDATE adresse, code_postal, ville FROM users WHERE user_id = 2879
par exemple.
0
nico971gwada Messages postés 28 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 29 mai 2007
21 juil. 2006 à 09:39
Salut,

Pour ce qui est du fichier xml je vois pas trop comment faire (en fait j'ai pas cherché) et pour la méthode UPDATE j'y avais pensé mais mon boss veut pas que je log les gens. En fait c une enquete au sein meme de la boite et les réponses doivent absoluement être anonymes donc j'accorde un id automatiquement dès que quelqu'un arrive sur la premiere page. Je pense que je vais me servir des sessions.

Sinon est-ce que vous pensez qu'il est possible de tout faire sur une meme page? En gros je ferais une fonction qui affiche les questions que l'on veut et suivant l'endroit où on se trouve sur le questionnaire quand on appuie sur suivant (ou précédent) ça recharge la page en faisant appel à ma fonction en lui passant d'autres arguments (les questions suivantes ou précédentes). Si oui, est-ce que je dois définir ma fonction sur la meme page ou sinon la faire sur une autre et dans ce cas comment l'appeler?

En tout cas merci à tous pour vos réponses.

Ps: je sais que je suis une quiche mais à la base on m'avait enbauché pour faire du java...
0
massacr Messages postés 233 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 4 janvier 2007
22 juil. 2006 à 19:24
Pourquoi les sessions ne seraient pas propres. Elles le sont toujours plus que les paramètres passés par l'URL. Quand au XML, je pense que niveau performances ca doit pas être génial. Enfin je ne m'y connais pas trop en XML et c'est possible que je me trompe.

 
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 juil. 2006 à 10:25
C'est effectivement une idée reçue qu'ont ceux qui ne se sont jamais réellement penché sur XML. PHP se débrouille très bien avec XML.
0
mayak2005 Messages postés 6 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 5 janvier 2008
24 oct. 2007 à 23:58
bjr,
j'a crée une page dans lakelle je saisis des varaibles ke je veux transmettre à 2pages.
svp écrivez moi le code précis juste ce ke je doi insérer dan lé 3 pages
l'initiale et aux 2 dont je doi envoyé lé var
0
Rejoignez-nous