Création de formulaire sur plusieurs pages [Résolu]

Messages postés
28
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
29 mai 2007
- - Dernière réponse : 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.
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de malalam
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
0
Merci
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.
Commenter la réponse de DiGhan
Messages postés
470
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013
0
Merci
Pourrais tu nous donner la structure et les données de ta table,
afin d'espéré pouvoir t'aider.... ;)
Commenter la réponse de wizard512
Messages postés
28
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
29 mai 2007
0
Merci
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.
Commenter la réponse de nico971gwada
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
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.
Commenter la réponse de malalam
Messages postés
28
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
29 mai 2007
0
Merci
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...
Commenter la réponse de nico971gwada
Messages postés
233
Date d'inscription
vendredi 2 juillet 2004
Statut
Membre
Dernière intervention
4 janvier 2007
0
Merci
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.

 
Commenter la réponse de massacr
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
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.
Commenter la réponse de malalam
Messages postés
6
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
5 janvier 2008
0
Merci
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
Commenter la réponse de mayak2005