Traitement de plusieurs formulaires sur une seule page php [Résolu]

Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Dernière intervention
5 mars 2007
- - Dernière réponse : jhenner
Messages postés
5
Date d'inscription
mardi 16 mars 2004
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 !
Afficher la suite 

Votre réponse

6 réponses

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

Dire « Merci » 3

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

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de malalam
Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Dernière intervention
5 mars 2007
0
Merci
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 ?
Commenter la réponse de arnold002
Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Dernière intervention
5 mars 2007
0
Merci
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 ?
Commenter la réponse de arnold002
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
0
Merci
si ok
//echo 'form2';
header("location:form2.php");
Commenter la réponse de sidf
Messages postés
121
Date d'inscription
mercredi 27 octobre 2004
Dernière intervention
5 mars 2007
0
Merci
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.
Commenter la réponse de arnold002
Messages postés
5
Date d'inscription
mardi 16 mars 2004
Dernière intervention
4 mai 2018
0
Merci
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.
Commenter la réponse de jhenner

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.