IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire en plusieurs étapes avec vérifications


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Formulaire en plusieurs étapes avec vérifications
    Bonjour tout le monde.
    Je vous expose mon problème:
    En faite, je voudrait créer un formulaire d'inscription en plusieurs étapes, avec une vérification des champs entre chaque étape.
    Voilà en gros le schéma que je recherche:
    Première étape, inscription données persos -> clic sur suivant -> vérification des champs (si ils sont pas vides, bien remplis etc...). -> Si il y a une erreur, retour à la première partie. Sinon, passage à la suivante.
    Et ainsi de suite sur 3 étapes.

    J'ai déjà sortis le plus gros:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?php
    	if ( !isset($_GET['etape']) || $_GET['etape'] == 1 ) {
    ?>
     
    		<fieldset>
    			<legend>Renseignez vos informations personnelles</legend>
    			<form action="medecin.php?etape=2" method="post" name="registerDoc" id="registerDoc">
    				<input type="text" placeholder="Nom" name="nomDoc" ><br />
    				<input type="text" placeholder="Prénom" name="prenomDoc" ><br />
    				<input type="text" placeholder="Fonction/Spécialité" name="specialiteDoc" ><br />
    				<input type="text" placeholder="Numéro de téléphone" name="telephoneDoc" ><br />
    				<input type="text" placeholder="Adresse mail" name="mailDoc" ><br />
    				<input type="submit" value="Suivant" name="envoieInfoDoc">
    			</form>
    		</fieldset>
     
    <?php
    		if (( !isset($_GET['etape']) || $_GET['etape'] == 2 ) && (isset($_POST['envoieInfoDoc'])) && (isset($_POST['nomDoc']) && !empty($_POST['nomDoc'])) && (isset($_POST['prenomDoc']) && !empty($_POST['prenomDoc'])) && (isset($_POST['specialiteDoc']) && !empty($_POST['specialiteDoc'])) && (isset($_POST['telephoneDoc']) && !empty($_POST['telephoneDoc'])) && (isset($_POST['mailDoc']) && !empty($_POST['mailDoc']))){
     
    /*}elseif{*/
                $_SESSION['nomDoc']=$_POST['nomDoc'];
                $_SESSION['prenomDoc']=$_POST['prenomDoc'];
                $_SESSION['specialiteDoc']=$_POST['specialiteDoc'];
                $_SESSION['telephoneDoc']=$_POST['telephoneDoc'];
                $_SESSION['mailDoc']=$_POST['mailDoc'];
    ?>
     
    			<fieldset>
    				<legend>Renseignez les informations concernant votre cabinet</legend>
    	        	<form action="medecin.php?etape=3" method="post" name="registerCab" id="registerCab">
    					<input type="text" placeholder="Nom du cabinet" name="nomCab" ><br />
    					<input type="textarea" placeholder="Adresse" name="adresseCab" ><br />
    					<input type="text" placeholder="Code Postal" name="cpCab" ><br />
    					<input type="text" placeholder="Fonction/Spécialité" name="specialiteCab" ><br />
    					<input type="text" placeholder="Numéro de téléphone" name="telephoneCab" ><br />
    					<input type="submit" value="Suivant" name="envoieInfoCab">
    				</form>
    			</fieldset>
     
    <?php
    			if (( !isset($_GET['etape']) || $_GET['etape'] == 3 ) && (isset($_POST['envoieInfoCab'])) && (isset($_POST['nomCab']) && !empty($_POST['nomCab'])) && (isset($_POST['adresseCab']) && !empty($_POST['adresseCab'])) && (isset($_POST['cpCab']) && !empty($_POST['cpCab'])) && (isset($_POST['specialiteCab']) && !empty($_POST['specialiteCab'])) && (isset($_POST['telephoneCab']) && !empty($_POST['telephoneCab']))){
     
    /*}elseif( $_GET['etape'] == 3 ){*/
                    $_SESSION['nomCab']=$_POST['nomCab'];
                    $_SESSION['adresseCab']=$_POST['adresseCab'];
                    $_SESSION['cpCab']=$_POST['cpCab'];
                    $_SESSION['specialiteCab']=$_POST['specialiteCab'];
                    $_SESSION['telephoneCab']=$_POST['telephoneCab'];
    ?>
     
    				<h1>Récapitulatif de vos informations: </h1> 
    <?php    
                	echo "Nom du médecin : ".$_SESSION['nomDoc']."<br />Prénom du médecin : ".$_SESSION['prenomDoc']."<br />Spécialité : ".$_SESSION['specialiteDoc']."<br />Téléphone du médecin : ".$_SESSION['telephoneDoc']."<br />Adresse mail du médecin : ".$_SESSION['mailDoc']."<br />";
                	echo "Nom du cabinet : ".$_SESSION['nomCab']."<br />Adresse du cabinet : ".$_SESSION['adresseCab']."<br />Code postal du cabinet : ".$_SESSION['cpCab']."<br />Spécialité du cabinet : ".$_SESSION['specialiteCab']."<br />Téléphone du abinet : ".$_SESSION['telephoneCab'];
     
        		}else{
        			echo 'Erreur lors de la complétion de la partie cabinet du formulaire';
        		}
     
        	}else{
        		echo 'Erreur lors de la complétion de la partie médecin du formulaire';
        	}
     
    	}else{
    		echo 'Erreur de je ne sais quoi';
    	}
     
    ?>

    Mais je n'arrive pas à faire la vérification entre chaque étape. J'ai d'office les messages d'erreurs qui s'affichent, et quand je clique sur suivant, je passe à une page blanche avec juste l'un des messages d'erreur. J'arrive pas trop à comprendre comment je pourrais faire...
    Vous pouvez m'aider siouplé?

    Merci


    PS: Si quelqu'un pourrait me donner les lignes permettant de faire un bouton précédent, ca serait sympa aussi

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Bon, j'ai corriger omn code, je n'ai plus le message qui s'affiche, mais maintenant, lorsque je valide ma première étape, je passe à la deuxième, mais quand je valide la deuxième, je reviens à la première. Je n'arrive pas à accéder à la page récapitulative, qui est censé être l'étape 3. Une idée quelqu'un?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <fieldset>
    	<legend>Renseignez vos informations personnelles</legend>
    	<form action="medecin.php?etape=2" method="post" name="registerDoc" id="registerDoc">
    		<input type="text" placeholder="Nom" name="nomDoc" ><br />
    		<input type="text" placeholder="Prénom" name="prenomDoc" ><br />
    		<input type="text" placeholder="Fonction/Spécialité" name="specialiteDoc" ><br />
    		<input type="text" placeholder="Numéro de téléphone" name="telephoneDoc" ><br />
    		<input type="text" placeholder="Adresse mail" name="mailDoc" ><br />
    		<input type="submit" value="Suivant" name="envoieInfoDoc">
    	</form>
    </fieldset>
     
    <?php
    	if (( !isset($_GET['etape']) || $_GET['etape'] == 2 ) && ((isset($_POST['nomDoc']) && !empty($_POST['nomDoc'])) && (isset($_POST['prenomDoc']) && !empty($_POST['prenomDoc'])) && (isset($_POST['specialiteDoc']) && !empty($_POST['specialiteDoc'])) && (isset($_POST['telephoneDoc']) && !empty($_POST['telephoneDoc'])) && (isset($_POST['mailDoc']) && !empty($_POST['mailDoc'])))){
     
    /*}elseif{*/
                $_SESSION['nomDoc']=$_POST['nomDoc'];
                $_SESSION['prenomDoc']=$_POST['prenomDoc'];
                $_SESSION['specialiteDoc']=$_POST['specialiteDoc'];
                $_SESSION['telephoneDoc']=$_POST['telephoneDoc'];
                $_SESSION['mailDoc']=$_POST['mailDoc'];
    ?>
     
    			<fieldset>
    				<legend>Renseignez les informations concernant votre cabinet</legend>
    	        	<form action="medecin.php?etape=3" method="post" name="registerCab" id="registerCab">
    					<input type="text" placeholder="Nom du cabinet" name="nomCab" ><br />
    					<input type="textarea" placeholder="Adresse" name="adresseCab" ><br />
    					<input type="text" placeholder="Code Postal" name="cpCab" ><br />
    					<input type="text" placeholder="Fonction/Spécialité" name="specialiteCab" ><br />
    					<input type="text" placeholder="Numéro de téléphone" name="telephoneCab" ><br />
    					<input type="submit" value="Suivant" name="envoieInfoCab">
    				</form>
    			</fieldset>
     
    <?php
    		}elseif (( !isset($_GET['etape']) || $_GET['etape'] == 3 ) && ((isset($_POST['nomCab']) && !empty($_POST['nomCab'])) && (isset($_POST['adresseCab']) && !empty($_POST['adresseCab'])) && (isset($_POST['cpCab']) && !empty($_POST['cpCab'])) && (isset($_POST['specialiteCab']) && !empty($_POST['specialiteCab'])) && (isset($_POST['telephoneCab']) && !empty($_POST['telephoneCab'])))){
     
    /*}elseif( $_GET['etape'] == 3 ){*/
                    $_SESSION['nomCab']=$_POST['nomCab'];
                    $_SESSION['adresseCab']=$_POST['adresseCab'];
                    $_SESSION['cpCab']=$_POST['cpCab'];
                    $_SESSION['specialiteCab']=$_POST['specialiteCab'];
                    $_SESSION['telephoneCab']=$_POST['telephoneCab'];
    ?>
     
    				<h1>Récapitulatif de vos informations: </h1> 
    <?php    
                	echo "Nom du médecin : ".$_SESSION['nomDoc']."<br />Prénom du médecin : ".$_SESSION['prenomDoc']."<br />Spécialité : ".$_SESSION['specialiteDoc']."<br />Téléphone du médecin : ".$_SESSION['telephoneDoc']."<br />Adresse mail du médecin : ".$_SESSION['mailDoc']."<br />";
                	echo "Nom du cabinet : ".$_SESSION['nomCab']."<br />Adresse du cabinet : ".$_SESSION['adresseCab']."<br />Code postal du cabinet : ".$_SESSION['cpCab']."<br />Spécialité du cabinet : ".$_SESSION['specialiteCab']."<br />Téléphone du abinet : ".$_SESSION['telephoneCab'];
     
    		}else{
    			echo 'Erreur lors de la complétion du formulaire';
    		}		        	
     
     
    ?>

  3. #3
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut Javascript ?
    Que tu vérifies tes données de formulaire au moment du traitement SQL ou autres d'accord, mais si ce n'est qu'une question de facilité pour l'utilisateur, tu auras beaucoup plus de facilité (et ça en rechargera pas ta page) avec du javascript ma foie

    Mais sinon pour ton code, si tu n'arrives pas à la troisième étapes c'est éventuellement parce que tu laisses tes champs vide dans ton formulaire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (( !isset($_GET['etape']) || $_GET['etape'] == 3 ) && ((isset($_POST['nomCab']) && !empty($_POST['nomCab'])) && (isset($_POST['adresseCab']) && !empty($_POST['adresseCab'])) && (isset($_POST['cpCab']) && !empty($_POST['cpCab'])) && (isset($_POST['specialiteCab']) && !empty($_POST['specialiteCab'])) && (isset($_POST['telephoneCab']) && !empty($_POST['telephoneCab'])))){
    Ta première étape tu n'y retournes pas, elle s'affiche juste parce qu'elle n'a pas de condition.

    Chez moi j'arrive à la troisième étape ^^

    Eventuellement mettre une condition sur l'étape un pour qu'elle ne reste pas affichée ? (Si tu continues ton formulaire exclusivement en php bien entendu)

    Jisig

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Justement, je ne sais pas trop quoi mettre comme première condition pour l'étape une.
    Et je fais bien attention de ne laisse aucun champ vide lors du remplissage, mais je boucle tout de même sur l'étape une

  5. #5
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut L'étape une
    Heu une condition du genre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!isset($_GET['etape']) || $_GET['etape'] == 1 )
    Jisig

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    En effet... Tout simplement

    Et pour faire un bouton précédent qui s'affiche lors du message d'erreur de saisie du formulaire, une idée? PArce que si je fais précédent avec le bouton du navigateur, je renvoie le formulaire, c'est pas super pratique.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    C'est bon j'ai trouvé.
    Merci à ceux qui m'ont aidé.

    Pour ceux qui cherche pour le bouton retour, c'est vraiment simple, une petite fonction JS à inclure dans un bouton de formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" value="page précédente" onclick="javascript:history.back()">

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. formulaire à plusieurs étapes avec la method post
    Par sam01 dans le forum Langage
    Réponses: 2
    Dernier message: 25/11/2010, 15h37
  2. Formulaire en plusieurs parties, avec validation
    Par Flackou dans le forum Ruby on Rails
    Réponses: 15
    Dernier message: 20/05/2008, 17h32
  3. Formulaire en plusieurs parties ? (avec controle des erreurs)
    Par fabseven dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 04/04/2008, 17h23
  4. [MySQL] Un petit exemple de formulaire en plusieurs étapes
    Par guismoman33 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/03/2008, 18h57
  5. Réponses: 2
    Dernier message: 07/08/2007, 17h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo