Bonjour a tous,

Voila mon problème, j'ai un code qui utilise un formulaire 6 fois avec seulement le nom du champ mot de passe qui varie, j'ai donc essayé de mettre le formulaire dans une fonction avec le nom du champ password comme paramètre, malheuresement impossible de faire exécuter les actions lorsque mon mot de passe est valide.

Le code : Un premier formulaire demande quel choix on fait, si on fait choix1 il demande le mot de passe via la fonction sinon rien ne ce passe.

Premier formulaire :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Fiche d'envoie vers cible</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
	 
	<form action="FonctionForm.php" method="post">
	<p>
	<select name="choix">
    <option value="Choix1">Choix 1</option>
    <option value="Choix2">Choix 2</option>
    <option value="Choix3">Choix 3</option>
    <option value="Choix4">Choix 4</option>
    </select>
	<input type="submit" value="Valider"/>
	</p>
	</form>
	 
    </body>
</html>



Traitement du premier formulaire + deuxieme formulaire sous forme de fonction :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Rock</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body> 
	 
	<?php
	
		function EnvoieFormulaire ($mdp) {
	
			?>
			<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
			<p>
			<input type="password" name="$mdp">
			<input type="submit" value="Valider">
			</form>
			</p>
			<?php
			}
			
		
		if (isset($_POST['choix']) AND $_POST['choix']=='Choix1'){//Est ce que choix1 a été validé
			EnvoieFormulaire ('mot_de_passe_1');
			}
	
		elseif (!isset($_POST['choix']) AND isset($_POST['mot_de_passe_1']) AND $_POST['mot_de_passe_1']=="azerty"){
			echo '<p>La variable choix n est pas prise en compte</p>';
			echo '<p>La variable Mot de passe 1 est prise en compte</p>';
			}
		
		//elseif isset($_POST['choix']) AND ($_POST['choix']=='Choix2' OR $_POST['choix']=='Choix3' OR $_POST['choix']=='Choix4')) { 
		//	echo 'Choix 2, 3, 4'; 
		//	}
	?>
     
         
    </body>
</html>	


C'est juste une maquette qui simule ce que je voudrai obtenir.

Merci d'avance a vous Smiley cligne
Modifié par Heps (08 Jul 2013 - 13:49)
Salut Heps,

Le code à l'air bon.
Tu as controlé la variable $_SERVER['PHP_SELF'] voir si elle te retourne le bon chemin?
Le code sans la mise du formulaire sous forme de fonction marche.
Le problème c'est qu'il ne rentre pas dans la boucle de validation du mot de passe :
elseif (!isset($_POST['choix']) AND isset($_POST['mot_de_passe_1']) AND $_POST['mot_de_passe_1']=="azerty"){
.

Donc j'imagine qu'il ne trouve pas 'mot_de_passe_1' et que du coup il ne valide pas la condition.
Fin bref le problème doit ce situer au niveau de $mdp, mais je sais pas ou !! Smiley bawling
Avant la validation de mon mot de passe il me met :

array (size=1)
'choix' => string 'Choix1' (length=6)

Après validation du formulaire de mot de passe j'ai :

array (size=1)
'$mdp' => string 'azerty' (length=6).

donc j'ai jamais 'mot_de_passe_1' dans $_POST, c'est pour ça qu'il ne me valide pas la condition de ma boucle. J'aurai du avoir 'mot_de_passe_1'=="azerty".
Bonjour,
C'est normal, $mdp c'est du php, donc il faut les balises php et le mettre en echo:
<input type="password" name="$mdp">

devient:
<input type="password" name="<?php echo $mdp; ?>">
Merci GroquikMLV

Effectivement c'était juste ça le problème, tout marche correctement maintenant.

Encore merci a la communautée, pour ces réponses rapide, et efficace.
Smiley biggrin