Page 1 sur 1

Bouton de confirmation en envoi de formulaire

Posté : 02 mai 2014, 09:51
par Jexus11
Bonjour,
Je viens vers vous pour quérir votre aide.
Je suis en train de réaliser un formulaire d'inscription pour médecins pour la boite dans laquelle je suis en stage.
J'ai déjà réussi à créer tout le formulaire, les différentes étapes, le bouton retour, les messages d'erreurs au cas où...
Mais maintenant je bloque. En faite, je voudrais que sur la page "Récapitulatif", il y ai un bouton de confirmation qui envoie les données saisies dans ma base de données, et qu'il ramène ensuite sur ma page d'accueil.
J'ai déjà une petite idée de la ligne pour la commande d'envoi, mais je n'ai aucune idée de comment faire mon bouton de confirmation, si je dois créer un form juste pour lui sur la page récap' ou quoi.
Un petit coup de main siouplé? =)


Voilà mon php:
<?php
	if(!isset($_GET['etape'])){
?>
<!-- Infos perso -->
<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="button" value="Précédent" onclick="javascript:history.back(-1)">
		<input type="submit" value="Suivant" name="envoieInfoDoc">
	</form>
</fieldset>
<!-- /Infos perso -->
<?php
	// Je vérifie que je suis bien à l'étape 2 et que les champs de la partie infos persos sont tous remplis
	}elseif (( !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'])))){

		// Je stock les données persos dans des variables correspondants
        $_SESSION['nomDoc']=$_POST['nomDoc'];
        $_SESSION['prenomDoc']=$_POST['prenomDoc'];
        $_SESSION['specialiteDoc']=$_POST['specialiteDoc'];
        $_SESSION['telephoneDoc']=$_POST['telephoneDoc'];
        $_SESSION['mailDoc']=$_POST['mailDoc'];
?>
		<!-- Infos cabinet -->
		<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="button" value="Précédent" onclick="javascript:history.back(-1)">
				<input type="submit" value="Suivant" name="envoieInfoCab">
			</form>
		</fieldset>
		<!-- /Infos cabinet -->
<?php

	// Si je ne suis pas à l'étape 2, Je vérifie que je suis bien à l'étape 3 et que les champs de la partie cabinet sont tous remplis
	}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'])))){

		// Je stock les infos du cabinet dans des variables correspondantes
        $_SESSION['nomCab']=$_POST['nomCab'];
        $_SESSION['adresseCab']=$_POST['adresseCab'];
        $_SESSION['cpCab']=$_POST['cpCab'];
        $_SESSION['specialiteCab']=$_POST['specialiteCab'];
        $_SESSION['telephoneCab']=$_POST['telephoneCab'];
?>
			
		<!-- Je récapitule les informations saisies, pour éviter les erreurs -->
		<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'];

  	// Si je ne suis ni à l'étape 2 ni à la 3 et/ou si un champ n'a pas été correctement rempli, je l'annonce au visieur
	}else{
		echo 'Erreur lors de la complétion du formulaire';
?>

		<!-- Je lui permet de revenir en arrière pour corriger -->

		<br /><input type="button" value="Retour au formulaire" onclick="javascript:history.back(-1)">

?>
PS: Si quelqu'un pourrait aussi me donner un petit truc pour permettre une vérif en direct des champs, genre quand je clique sur le champ nom, je renseigne mon nom, et au moment ou je sort du champ, j'indique de suite à côté (avec un logo ou du texte) si le champ est correct.

Merci =)

Re: Bouton de confirmation en envoi de formulaire

Posté : 02 mai 2014, 11:45
par moogli
salut,

1/ oui, il te faut un formulaire si tu veux faire cela. Après cela peux aussi être un appel ajax mais il faut un appel serveur.

2/ event onblur + fonction javascript executée sur cette event

@+

Re: Bouton de confirmation en envoi de formulaire

Posté : 02 mai 2014, 11:56
par Jexus11
Merci pour l'event onblur, je vais potasser ça, ça à l'air assez simple à prendre en main.

Après, concernant mon bouton confirmation, je ne sais pas trop quoi mettre. J'ai déjà testé deux ou trois trucs, genre
<br /><input type="button" value="Confirmer" onClick= "return confirm('Confirmer l'enregistrement ') "/>
Mais je n'arrive pas à le faire fonctionner correctement. Une idée?


Merci =)

Re: Bouton de confirmation en envoi de formulaire

Posté : 02 mai 2014, 22:37
par moogli
[javascript]
function validation(){
if(confirm('Confirmer l'enregistrement ')) {
leformulaire.submit(); // je te laisse faire cette partie la :)
}else {
return false
}
[/javascript]

le bouton
<input type="button" value="Confirmer" onClick= "validation()"/>
@+

Re: Bouton de confirmation en envoi de formulaire

Posté : 05 mai 2014, 09:12
par Jexus11
En farfouillant sur internet pour apprendre à maitriser onblur, je suis tombé sur un combo HTML/CSS qui fonctionne très bien pour la validation des champs et qui empêche de passer à la page d'après tant que la saisie ne respecte pas un pattern prédéfinis.

Pour ceux qui veulent savoir comment ça marche, regarder du côté des regex, des pattern en HTML et des fonctions :valid et :invalid en CSS. Voili voilou :mrgreen:


Et merci moogli pour ton aide. :D

Re: Bouton de confirmation en envoi de formulaire

Posté : 05 mai 2014, 11:52
par Jexus11
Bon, j'ai fais des essais avec ton code moogli, et étant véritablement très mauvais en javascript, je ne sais pas trop quoi mettre dans ma fonction.
J'ai essayé en balançant directement ma requête INSERT dans ma fonction validation, mais ça n'a pas l'air de fonctionner.

Un petit indice pour me mettre sur la voie?

Re: Bouton de confirmation en envoi de formulaire

Posté : 06 mai 2014, 10:09
par Jexus11
Bon, mon bouton de confirmation ne fonctionne toujours pas, mais je viens de repérer un autre problème:
Un simple clic sur le bouton suivant passe à la suite du formulaire, MAIS envoie également les données dans la base de données. Alors que cette dernière étape ne devrait être faisable que sur la page de confirmation/récapitulation des données.
Qu'est ce qui foire dans le code?
<?php
header('Content-Type: text/html; charset=UTF-8');
// fichiers de conf
require "../phprequire/config.php";
require "../phprequire/pdo.php";

?>
<html> 
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> 
<style type="text/css">
	:invalid{
		box-shadow: 0 0 2px 1px red;
		border-color: red;
	};
	:valid{
		box-shadow: 0 0 2px 1px green;
		border-color: green;
	};
</style>	

</head>
<body>
<div id="registerPraticien">

	<?php
		if(!isset($_GET['etape'])){
	?>
	<!-- Infos perso -->
	<fieldset>
		<legend>Renseignez vos informations personnelles</legend>
		<form action="medecin.php?etape=2" method="post" name="registerDoc" id="registerDoc" onsubmit="return controleNom();">
			<input id="nomDoc" type="text" placeholder="Nom" name="nomDoc" pattern="[A-ZÀÂÇÈÉÊËÎÔÙÛ ]*"><br />
			<input id="prenomDoc" type="text" placeholder="Prénom" name="prenomDoc" pattern="[a-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû ]*"><br />
			<input id="specialiteDoc" type="text" placeholder="Fonction/Spécialité" name="specialiteDoc" pattern="/^[\sa-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû\]+$/g;"><br />
			<input id="telephoneDoc" type="tel" placeholder="Numéro de téléphone" name="telephoneDoc" pattern="^0[1-68]([-. ]?[0-9]{2}){4}$"><br />
			<input id="mailDoc" type="text" placeholder="Adresse mail" name="mailDoc" pattern="^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$"><br />
			<input type="button" value="Précédent" onclick="javascript:history.back(-1)">
			<input type="submit" value="Suivant" name="envoieInfoDoc">
		</form>
	</fieldset>
	<!-- /Infos perso -->
	<?php
		// Je vérifie que je suis bien à l'étape 2 et que les champs de la partie infos persos sont tous remplis
		}elseif (( !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'])))){

    		// Je stock les données persos dans des variables correspondants
            $_SESSION['nomDoc']=$_POST['nomDoc'];
            $_SESSION['prenomDoc']=$_POST['prenomDoc'];
            $_SESSION['specialiteDoc']=$_POST['specialiteDoc'];
            $_SESSION['telephoneDoc']=$_POST['telephoneDoc'];
            $_SESSION['mailDoc']=$_POST['mailDoc'];
	?>
			<!-- Infos cabinet -->
			<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"  pattern="[a-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû ]*"><br />
					<input type="textarea" placeholder="Adresse" name="adresseCab"  pattern="[0-9]{1,3}(?:(?:[,. ]){1}[-a-zA-Zàâäéèêëïîôöùûüç]+)+"><br />
					<input type="text" placeholder="Code Postal" name="cpCab" pattern="^[0-9]{5}$"><br />
					<input type="text" placeholder="Fonction/Spécialité" name="specialiteCab"  pattern="/^[\sa-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû\]+$/g;"><br />
					<input type="tel" placeholder="Numéro de téléphone" name="telephoneCab" pattern="^0[1-68]([-. ]?[0-9]{2}){4}$"><br />
					<input type="button" value="Précédent" onclick="javascript:history.back(-1)">
					<input type="submit" value="Suivant" name="envoieInfoCab">
				</form>
			</fieldset>
			<!-- /Infos cabinet -->
	<?php

		// Si je ne suis pas à l'étape 2, Je vérifie que je suis bien à l'étape 3 et que les champs de la partie cabinet sont tous remplis
		}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'])))){

			// Je stock les infos du cabinet dans des variables correspondantes
            $_SESSION['nomCab']=$_POST['nomCab'];
            $_SESSION['adresseCab']=$_POST['adresseCab'];
            $_SESSION['cpCab']=$_POST['cpCab'];
            $_SESSION['specialiteCab']=$_POST['specialiteCab'];
            $_SESSION['telephoneCab']=$_POST['telephoneCab'];
	?>
				
			<!-- Je récapitule les informations saisies, pour éviter les erreurs -->
			<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'];
	?>
	  		<br /><input type="button" value="Confirmer" onclick= "validation()"/>

	<?php
		}		        	
		
	?>
	<script type="text/javascript">
	function validation(){
	if(confirm('Confirmer l\'enregistrement ')) {
	    leformulaire.submit(); 
	    </script><?php 
	    	try{
		    	$bdd = PDO2::getInstance();
		    	$stmt = $bdd->prepare("INSERT INTO users(nomUser, prenomUser, fonctionUser, telUser, emailUser) VALUES(:nomUser, :prenomUser, :fonctionUser, :telUser, :emailUser)") or exit(print_r($bdd->errorInfo()));
		    	$stmt->bindParam(':nomUser', $_SESSION['nomDoc'], PDO::PARAM_STR, 50);
		    	$stmt->bindParam(':prenomUser', $_SESSION['prenomDoc'], PDO::PARAM_STR, 50);
		    	$stmt->bindParam(':fonctionUser', $_SESSION['specialiteDoc'], PDO::PARAM_STR, 75);
		    	$stmt->bindParam(':telUser', $_SESSION['telephoneDoc'], PDO::PARAM_STR, 15);
		    	$stmt->bindParam(':emailUser', $_SESSION['mailDoc'], PDO::PARAM_STR, 100);

	    	$stmt->execute();

	    	} catch (PDOException $e) {
	    		echo 'Erreur insert into users : ' . $e->getMessage();
	    		$stmt>rollBack();
	    	}

	    ?>
<script type="text/javascript">
	}else{
	    return false
	}
</script>
</div>
</body>
</html>

Re: Bouton de confirmation en envoi de formulaire

Posté : 06 mai 2014, 15:57
par moogli
tu pense réellement que ceci peux fonctionner (comme tu le pense) ?
?>
    <script type="text/javascript">
        function validation() {
            if (confirm('Confirmer l\'enregistrement ')) {
                leformulaire.submit();
    </script><?php
    try {
        $bdd = PDO2::getInstance();
        $stmt =
            $bdd->prepare("INSERT INTO users(nomUser, prenomUser, fonctionUser, telUser, emailUser) VALUES(:nomUser, :prenomUser, :fonctionUser, :telUser, :emailUser)") or
        exit(print_r($bdd->errorInfo()));
        $stmt->bindParam(':nomUser', $_SESSION['nomDoc'], PDO::PARAM_STR, 50);
        $stmt->bindParam(':prenomUser', $_SESSION['prenomDoc'], PDO::PARAM_STR, 50);
        $stmt->bindParam(':fonctionUser', $_SESSION['specialiteDoc'], PDO::PARAM_STR, 75);
        $stmt->bindParam(':telUser', $_SESSION['telephoneDoc'], PDO::PARAM_STR, 15);
        $stmt->bindParam(':emailUser', $_SESSION['mailDoc'], PDO::PARAM_STR, 100);

        $stmt->execute();

    } catch (PDOException $e) {
        echo 'Erreur insert into users : ' . $e->getMessage();
        $stmt > rollBack();
    }
    ?>
    <script type="text/javascript">
        }else
        {
            return false
        }
    </script>
si oui il faut que tu revois le fonctionnement de php :)
php est exécuté sur un serveur et le javascript sur le client (en clair ton navigateur).
lorsque tu va essayer d'utiliser ta fonction javascript le code php qui s'y trouve aura déjà été exécuté.
D'ailleurs c'est dès le cas au première affichage de ton formulaire.
Coté JS / html le code que tu génère n'est pas correcte (tu commence la fonction dans un tag script et finit dans une autre c'est pas du php ça ne fonctionne pas :).

Donc le code que tu as mis en bas de page doit être exécuté que si tu valide le dernier formulaire.

Pourquoi utiliser un paramètre d'url, tu poste le formulaire autant utiliser un champs de type "hidden" ;)

pour savoir si le dernier formulaire est posté utilise le bouton (il faut le nommer).
d'ailleurs le dernier formulaire n'est pas dans un formulaire html (<form> </form>).
Un bouton submit suffit (sauf si tu as des besoin de tunning important mais cela ne semble pas être le cas).
la fonction validation permet juste de conditionner la soumission avec l'avertissement.

tu as une erreur de syntaxe sur le rollback (c'est $stmt->rollBack() que tu veux et pas tester si $stmt est supérieur au retour d'une fonction rollBack, d'ailleurs tu devrais avoir une erreur ?).

coté gestion d'erreur zéro :)
or exit(print_r($bdd->errorInfo())); => c'est moche car ne finit pas la page et laisse l'utilisateur sur se faim => utilise seulement le système d'exception.

Le type et la longueur sur le bindParam sont inutile (, PDO::PARAM_STR, 100) parce que par défaut le type c'est du string et c'est ce que tu utilise. De plus la longueur n'est nécessaire que sur les paramètre de sortie d'une appel à procédure stockée ;) )

La gestion du commit / rollback se fait au niveau de la connexion et non du PDOSatement (pas de méthode rollBack).
Est ce que tu as définis, à la connexion, que tu ne souhaitais pas d'auto commit ?

(isset($_POST['nomCab']) && !empty($_POST['nomCab']) peux être simplifier en !empty($_POST['nomCab']) car empty "effectue un isset" (si la variable n'existe pas il n'y a pas d'erreur et la fonction retourne true car considère comme "vide").

Rapidement je ferais quelque chose dans ce gout la :
<?php
// fichiers de conf
require "../phprequire/config.php";
require "../phprequire/pdo.php";

if (!empty($_POST['etapeFinale'])) {
    // validationfinale
    $stmt = null;
    $bdd = null;
    try {
        $bdd = PDO2::getInstance();
        $stmt = $bdd->prepare("INSERT INTO users(nomUser, prenomUser, fonctionUser, telUser, emailUser)
                                VALUES (:nomUser, :prenomUser, :fonctionUser, :telUser, :emailUser)");
        $stmt->bindParam(':nomUser', $_SESSION['nomDoc']);
        $stmt->bindParam(':prenomUser', $_SESSION['prenomDoc']);
        $stmt->bindParam(':fonctionUser', $_SESSION['specialiteDoc']);
        $stmt->bindParam(':telUser', $_SESSION['telephoneDoc']);
        $stmt->bindParam(':emailUser', $_SESSION['mailDoc']);

        $stmt->execute();
        $bdd->commit();
    } catch (PDOException $e) {
        echo 'Erreur insert into users : ' . $e->getMessage();
        // il y a de forte chance pour $stmt n'existe pas quand tu arrive ici (lorsque le prépare se vautre par
        // exemple
        if ($bdd != null && is_a($bdd, 'PDO')) {
            $bdd->rollBack();
        }
    }
    // un tite redirection vers une autre page ?
}
header('Content-Type: text/html; charset=UTF-8');
?>
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
    <style type="text/css">
        :invalid {
            box-shadow: 0 0 2px 1px red;
            border-color: red;
        }

        :valid {
            box-shadow: 0 0 2px 1px green;
            border-color: green;
        }

    </style>
    <script type="text/javascript">
        function validation() {
            return confirm('Confirmer l\'enregistrement ');
        }
    </script>
</head>
<body>
<div id="registerPraticien">

    <?php
    if (!isset($_GET['etape'])) {
        ?>
        <!-- Infos perso -->
        <fieldset>
            <legend>Renseignez vos informations personnelles</legend>
            <form action="medecin.php" method="post" onsubmit="return controleNom();">
                <input type="hidden" name="etape" value="2"/>
                <input id="nomDoc" type="text" placeholder="Nom" name="nomDoc" pattern="[A-ZÀÂÇÈÉÊËÎÔÙÛ ]*"><br/>
                <input id="prenomDoc" type="text" placeholder="Prénom" name="prenomDoc"
                       pattern="[a-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû ]*"><br/>
                <input id="specialiteDoc" type="text" placeholder="Fonction/Spécialité" name="specialiteDoc"
                       pattern="/^[\sa-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû\]+$/g;"><br/>
                <input id="telephoneDoc" type="tel" placeholder="Numéro de téléphone" name="telephoneDoc"
                       pattern="^0[1-68]([-. ]?[0-9]{2}){4}$"><br/>
                <input id="mailDoc" type="text" placeholder="Adresse mail" name="mailDoc"
                       pattern="^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$"><br/>
                <input type="button" value="Précédent" onclick="javascript&#058;history.back(-1)">
                <input type="submit" value="Suivant" name="envoieInfoDoc">
            </form>
        </fieldset>
        <!-- /Infos perso -->
        <?php
        // Je vérifie que je suis bien à l'étape 2 et que les champs de la partie infos persos sont tous remplis
    } elseif (!empty($_POST['etape']) && $_POST['etape'] == 2 && !empty($_POST['nomDoc']) &&
        !empty($_POST['prenomDoc']) && !empty($_POST['specialiteDoc']) && !empty($_POST['telephoneDoc']) &&
        !empty($_POST['mailDoc'])) {

        // Je stock les données persos dans des variables correspondants
        $_SESSION['nomDoc'] = $_POST['nomDoc'];
        $_SESSION['prenomDoc'] = $_POST['prenomDoc'];
        $_SESSION['specialiteDoc'] = $_POST['specialiteDoc'];
        $_SESSION['telephoneDoc'] = $_POST['telephoneDoc'];
        $_SESSION['mailDoc'] = $_POST['mailDoc'];
        ?>
        <!-- Infos cabinet -->
        <fieldset>
            <legend>Renseignez les informations concernant votre cabinet</legend>
            <form action="medecin.php" method="post">
                <input type="hidden" name="etape" value="3"/>
                <input type="text" placeholder="Nom du cabinet" name="nomCab"
                       pattern="[a-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû ]*"><br/>
                <input type="textarea" placeholder="Adresse" name="adresseCab"
                       pattern="[0-9]{1,3}(?:(?:[,. ]){1}[-a-zA-Zàâäéèêëïîôöùûüç]+)+"><br/>
                <input type="text" placeholder="Code Postal" name="cpCab" pattern="^[0-9]{5}$"><br/>
                <input type="text" placeholder="Fonction/Spécialité" name="specialiteCab"
                       pattern="/^[\sa-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû\]+$/g;"><br/>
                <input type="tel" placeholder="Numéro de téléphone" name="telephoneCab"
                       pattern="^0[1-68]([-. ]?[0-9]{2}){4}$"><br/>
                <input type="button" value="Précédent" onclick="javascript&#058;history.back(-1)">
                <input type="submit" value="Suivant" name="envoieInfoCab">
            </form>
        </fieldset>
        <!-- /Infos cabinet -->
        <?php
        // Si je ne suis pas à l'étape 2, Je vérifie que je suis bien à l'étape 3 et que les champs de la partie cabinet sont tous remplis
    } elseif (!empty($_POST['etape']) && ($_POST['etape'] == 3) && !empty($_POST['nomCab']) &&
        !empty($_POST['adresseCab']) && !empty($_POST['cpCab']) && !empty($_POST['specialiteCab']) &&
        !empty($_POST['telephoneCab'])
    ) {

        // Je stock les infos du cabinet dans des variables correspondantes
        $_SESSION['nomCab'] = $_POST['nomCab'];
        $_SESSION['adresseCab'] = $_POST['adresseCab'];
        $_SESSION['cpCab'] = $_POST['cpCab'];
        $_SESSION['specialiteCab'] = $_POST['specialiteCab'];
        $_SESSION['telephoneCab'] = $_POST['telephoneCab'];
        ?>

        <!-- Je récapitule les informations saisies, pour éviter les erreurs -->
        <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'];
        ?>
        <br/>
        <form method="post">
            <input type="submit" value="Confirmer" name="etapeFinale" onsubmit="validation()"/>
        </form>
    <?php
    } else {
        // tu fait quoi dans ce cas ?
    }
    ?>
</div>
</body>
</html>
 

je m'intrique : PDO2 ? une seule version n'est pas suffisante ?

il y a surement mieux à faire mais c'est une base.

pour info tes html 5 c'est très bien mais pense que cela ne fonctionne qu'avec des navigateurs récents (donc attention a la cible derrière s'il tournent sur du windows xp faut pas qu'ils utilisent IE ;) )

@+

Re: Bouton de confirmation en envoi de formulaire

Posté : 06 mai 2014, 16:16
par Jexus11
:shock: :shock:

Wow :shock: :shock:

Merci pour tous ces éclaircissements :shock:
Comme tu a pu le voir, je ne suis pas très à l'aise avec le langage serveur. Je le suis beaucoup plus avec les langages de développement genre HTML/CSS, et peut-être légèrement JQuery.

Pour le champ de type hidden, j'y avais penser, mais je ne sais pas trop comment l'utiliser pour gérer des étapes de formulaires. A vrai dire, je n'ai quasiment jamais utilisé ce genre de champs.

Entre temps, j'ai trouvé le moyen de valider correctement mon formulaire:
J'ai tout simplement enlever le JS, au profit d'un truc légèrement plus simple:
<form action="medecin.php?etape=finale" method="post">
              <input type="submit" value="Confirmer"/>
          </form>
          <?php
            // Je vérifie que je suis bien à l'étape finale. Si j'y suis, j'envoie les données dans la base 
            }elseif (( !isset($_GET['etape']) || $_GET['etape'] == 'finale')){
Encore une fois, j'utilise des paramètres d'URL.. Merci pour ces conseils sur les hidden.
Après, les nombreuses petites erreurs ou choses inutiles que tu à pu voir un peu partout, c'est parce que je suis aller piocher des codes par ci par là, notamment sur la doc PHP et des forums. Tu te doute bien qu'il m'est impossible de sortir un script pareil avec les faibles compétences php que j'ai :lol:

Re: Bouton de confirmation en envoi de formulaire

Posté : 06 mai 2014, 16:17
par Jexus11
Et encore merci pour ton pavé.
Ca m'est super utile :D

Re: Bouton de confirmation en envoi de formulaire

Posté : 06 mai 2014, 16:29
par Jexus11
J'ai un petit problème avec ton code:
Au chargement de la page, il m'affiche tous les champs comme bons :(
Et je sais pas si ça vient de moi ou quoi, mais je boucle toujours sur l'étape une. :? Et j'ai du mal de voir ce qui peut poser problème.

Re: Bouton de confirmation en envoi de formulaire

Posté : 07 mai 2014, 10:15
par moogli
if (!isset($_GET['etape'])) {

==> if (!isset($_POST['etape'])) {

parce que dans le code fournit j'ai virer le paramètre d'url pour le mettre dans le formulaire.
donc le if est toujours validé vu qu'il n'y a jamais de paramètre d'url étape :mrgreen:

ça m'apprendra à aller trop vite ;)

@+

Re: Bouton de confirmation en envoi de formulaire

Posté : 07 mai 2014, 10:25
par Jexus11
C'est le premier truc que j'ai corrigé ^^

Mais mon code persiste à vouloir le combo isset/!empty.
Si je ne le met pas, je ne passe pas au étape suivantes et mes champs sont toujours valides. Si ils sont vides et que je valide quand même le formulaire pour passer à l'étape suivante, je tombe sur page blanche.
Alors que si je met le combo, je ne peux pas passer à l'étape suivante et j'ai un message d'erreur qui s'affiche à côté du champ comme quoi faut le remplir.

Concrètement, ça change quelque chose que je mette les deux? Mis à part un temps de traitement de 0.0000000000000000000002 millisecondes plus long? :lol:

Re: Bouton de confirmation en envoi de formulaire

Posté : 07 mai 2014, 11:05
par Jexus11
Putain ça m'énerve mon code qui marche pas :evil: :evil:
Il me considère mes champs comme bons alors qu'ils sont vides :evil: :evil:
<div id="registerPraticien">

      <?php
        if (!isset($_POST['etape'])) {
          ?>
          <!-- Infos perso -->
          <fieldset>
              <legend>Renseignez vos informations personnelles</legend>
              <form action="inscription.php" method="post">
                  <input type="hidden" name="etape" value="2"/>
                  <input id="nomDoc" type="text" placeholder="Nom" name="nomDoc" pattern="[A-ZÀÂÇÈÉÊËÎÔÙÛ]*"><br />
                  <input id="prenomDoc" type="text" placeholder="Prénom" name="prenomDoc" pattern="[a-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû]*"><br />
                  <input id="specialiteDoc" type="text" placeholder="Fonction/Spécialité" name="specialiteDoc" pattern="/^[\sa-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû\]+$/g;"><br />
                  <input id="telephoneDoc" type="tel" placeholder="Numéro de téléphone" name="telephoneDoc" pattern="^0[1-68]([-. ]?[0-9]{2}){4}$">
                  <br />
                  <input id="mailDoc" type="text" placeholder="Adresse mail" name="mailDoc" pattern="^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$">
                  <br />
                  <input type="button" value="Précédent" onclick="javascript:history.back()">
                  <input type="submit" value="Suivant" name="envoieInfoDoc">
              </form>
          </fieldset>
          <!-- /Infos perso -->
          <?php
            // Je vérifie que je suis bien à l'étape 2 et que les champs de la partie infos persos sont tous remplis
        }elseif (( !isset($_POST['etape']) || $_POST['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'])))){

            // Je stock les données persos dans des variables correspondants
            $_SESSION['nomDoc'] = $_POST['nomDoc'];
            $_SESSION['prenomDoc'] = $_POST['prenomDoc'];
            $_SESSION['specialiteDoc'] = $_POST['specialiteDoc'];
            $_SESSION['telephoneDoc'] = $_POST['telephoneDoc'];
            $_SESSION['mailDoc'] = $_POST['mailDoc'];
          ?>

          <!-- Infos cabinet -->
          <fieldset>
              <legend>Renseignez les informations concernant votre cabinet</legend>
              <form action="inscription.php" method="post">
                  <input type="hidden" name="etape" value="3"/>
                  <input type="text" placeholder="Nom du cabinet" name="nomCab"
                         pattern="[a-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû ]*"><br/>
                  <input type="textarea" placeholder="Adresse" name="adresseCab"
                         pattern="[0-9]{1,3}(?:(?:[,. ]){1}[-a-zA-Zàâäéèêëïîôöùûüç]+)+"><br/>
                  <input type="text" placeholder="Code Postal" name="cpCab" pattern="^[0-9]{5}$"><br/>
                  <input type="text" placeholder="Fonction/Spécialité" name="specialiteCab"
                         pattern="/^[\sa-zA-ZÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôöùû\]+$/g;"><br/>
                  <input type="tel" placeholder="Numéro de téléphone" name="telephoneCab"
                         pattern="^0[1-68]([-. ]?[0-9]{2}){4}$"><br/>
                  <input type="button" value="Précédent" onclick="javascript&#058;history.back(-1)">
                  <input type="submit" value="Suivant" name="envoieInfoCab">
              </form>
          </fieldset>
          <!-- /Infos cabinet -->

          <?php
          // Si je ne suis pas à l'étape 2, Je vérifie que je suis bien à l'étape 3 et que les champs de la partie cabinet sont tous remplis
            }elseif (( !isset($_POST['etape']) || $_POST['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'])))){

          // Je stock les infos du cabinet dans des variables correspondantes
          $_SESSION['nomCab'] = $_POST['nomCab'];
          $_SESSION['adresseCab'] = $_POST['adresseCab'];
          $_SESSION['cpCab'] = $_POST['cpCab'];
          $_SESSION['specialiteCab'] = $_POST['specialiteCab'];
          $_SESSION['telephoneCab'] = $_POST['telephoneCab'];
          ?>

          <!-- Je récapitule les informations saisies, pour éviter les erreurs -->
          <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'];
          ?>

          <br/>
          <form method="post">
              <input type="submit" value="Confirmer" name="etapeFinale" onsubmit="validation()"/>
          </form>
     
          <?php
            }
          ?>

        </div>
C'est le code de moogli que j'ai adapté, mais il fonctionne pas correctement avec mes modifications :evil: