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

arnold002 121 Messages postés mercredi 27 octobre 2004Date d'inscription 5 mars 2007 Dernière intervention - 28 mai 2006 à 18:33 - Dernière réponse : jhenner 5 Messages postés mardi 16 mars 2004Date d'inscription 4 mai 2018 Dernière intervention
- 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
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 28 mai 2006 à 18:36
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.

Merci malalam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

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