Traitement de plusieurs formulaires sur une seule page php

Résolu
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007 - 28 mai 2006 à 18:33
jhenner Messages postés 5 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 4 mai 2018 - 29 mai 2006 à 22:51
Bonjour à tous,

J'ai un formulaire d'inscription relativement long.
Actuellement, l'utilisateur remplit ce formulaire et le valide. Le traitement php se fait ensuite.
Si une erreur est trouvée (par ex champ vide, champ non numérique etc...), un message d'erreur est affiché et l'utilisateur est bon pour resaisir le formulaire dans son intégralité.

Ce que je souhaite, c'est découper ce formulaire en plusieurs parties (5 au total). L'utilisateur remplit la 1ère partie, valide, le traitement s'effectue. Si le traitement est ok, on passe à la 2ème partie etc...
Entre chaque validation, je stocke les variables saisies sous forme de session.

Pour finir, et c'est là mon problème, je souhaite que tout soit traité dans une seule page. Je pourrai très bien faire un post vers une autre page php, mais je ne veux pas multiplier les pages inutilement.

J'ai démarré sur le principe des sessions.
Form 1 : 3 variables nom, prenom, numero_inscription.
Form 2 : 2 variables login, mdp
etc...

if(!isset($_SESSION['nom'])){
affiche Form 1
}

if(isset($_SESSION['nom']) && !isset($_SESSION['login'])){
affiche Form 2
}
etc...
Le problème, c'est qu'à l'envoi du Form 1, ca m'affiche bien Form 2 mais ne m'efface pas Form 1, alors que je voudrai que Form 2 s'affiche seul sur la page.
J'espère que je suis assez clair dans mes explications.
Si quelqu'un connait une bonne méthode, je suis preneur !

6 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 mai 2006 à 18:36
Hello,

mets des submits différents.
Quand tu arrives sur la page, aucun bouton submit n'a été soumis, docn tu affiches formulaire 1.
Si submit1 a été cliqué, alors c'est que formulaire 1 a été soumis : tu traites, et si tout est ok, tu affiches formulaire 2.
Si submit2 existe, alors c'est que formulaire 2 a été soumis...etc.
Bref, ce sont des if (isset...) et genération du html en fonction de tes conditions.
3
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007
28 mai 2006 à 19:05
Je ne comprends pas bien cette partie  "tu traites, et si tout est ok, tu affiches formulaire 2."
Si je mets :

if(!isset($submit1) && !isset($submit2)){
echo 'form1';
...

}

if(isset($submit1)){
traitement du form1 en php
si ok
echo 'form2';

}
etc...
Si je fais cela, et que le traitement de form1 n'est pas bon, form1 ne s'affiche plus, logique.

Si je fais le traitement de form1 dans la première boucle et que le traitement n'est pas ok, je reste sur form1, logique aussi.
Mais si le traitement est bon, comment je passe à form2 ?
0
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007
28 mai 2006 à 19:45
Je suis arrivé à un truc pluttôt acceptable mais j'ai encore un soucis.
Je suis resté sur mon histoire de variables de session.
Si form1 est ok, $_SESSION['nom'] est créé et je passe à form2. Le problème c'est que je dois cliquer 2 fois sur le submit pour accéder à form2.
La 1ère fois, je créé les variables de session et je sreste sur form1.
La seconde, j'accède à form2.
Comment je peux contourner ce problème ?
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
29 mai 2006 à 14:08
si ok
//echo 'form2';
header("location:form2.php");
0

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

Posez votre question
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007
29 mai 2006 à 15:58
J'ai testé la technique du header mais j'ai toujours un message d'erreur (header already sent ....).
Je suis arrivé à ce que je voulais en plaçant un <meta http-equiv="refresh" content="5;url=inscription.php"> après chaque formulaire.
La page se recharge, les variables de SESSION passent correctement et chaque formulaire s'affiche comme il se doit.

Merci à tous de votre aide.
0
jhenner Messages postés 5 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 4 mai 2018
29 mai 2006 à 22:51
J'ai travaillé durant un temps avec un module pdf : FPDF.
J'y ai trouvé une solution intéressante :  "session_cache_limiter('private');" à placer en tête de ta page php.
Je ne sais pas si ça va t'aider mais essaye quand même ;)

La source de cette soluce se trouve ici : http://www.fpdf.org/

@ pluche.
0
Rejoignez-nous