Donc voila, je vous explique rapidement mon problème.

J'ai créer un menu déroulant onClick qui en fonction de l'endroit on je clic, effectue une action.
J'ai voulu mettre un mot de passe, pour certaine action effectué via la commande onClick, le problème est qu'il ne detecte pas la deuxiéme condition (celle qui correspond a la demande d'application de l'action) la premiere condition étant la validation du mot de passe.
Peu importe ce que je fais impossible de faire marcher les actions de la deuxième condition.

Bref le code parlera pour moi !



Donc voila le fichier qui simule le menu déroulant onClick qui demande l'action a l'autre fichier
Le code mais le problème est le même. Le code ci dessous demande d'abord entre 4 choix, si l'utilisateur appuie sur Choix 1 il demande un mdp et affiche une phrase si il appuie sur Choix 2 il affiche directement la phrase si il appuie sur choix 3 ou 4, il dit que ces choix n'ont pas été implementé



<!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="testIndex.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>


Et voila le deuxième fichier qui demande le mot de passe, le test et verifie qu'elle action a été demandé avant de l'executer


<!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
	
		if (isset($_POST['choix']) AND $_POST['choix']=='Choix1'){
		
			?>
			<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
			<p>
			<input type="password" name="mot_de_passe">
			<input type="submit" value="Valider">
			</form>
			</p>
			<?php		
			
		
		if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe']=="azerty"){
	
        echo "<h1>Choix1 :</h1>";
        echo "<p><strong>Choix1 marche et mdp marche</strong></p> ";
        } }
    
		elseif (isset($_POST['choix']) AND $_POST['choix']=='Choix2'){
		
	
        echo "<h1>Choix2 :</h1>";
        echo "<p><strong>Choix2 marche</strong></p> ";
        } 
    
    else // Sinon, on affiche un message d'erreur
    {
        echo '<p>Choix 3 et 4 non implementé</p>';
    }
    ?>
     
         
    </body>
</html>



Donc le problème ce situe au niveau de
 if (isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe']=="azerty") { 


Il ne veut pas m'afficher les phrases des echos, même si je tape le bon mot de passe. Smiley decu
ça fait Trois jours que je suis dessus!!

Merci d'avance Smiley decu
Modifié par Heps (04 Jul 2013 - 16:18)
Une fois que tu valides le formulaire avec le mot de passe la page est rappelée mais le $_POST['choix'] qui était défini la première fois ne l’est plus et donc il ne passe pas la seconde fois dans le if isset($_POST['choix']) AND $_POST['choix']=='Choix1'
Merci de ta réponse, je me doutais que c’était quelque chose comme ça mais je vois pas comment le corriger
Tu arrives sur la page testIndex.php de deux manières différentes : 1) quand tu valides le formulaire avec le champ choix, 2) quand tu valides le formulaire avec le mot de passe.

La première chose à faire dans la deuxième page est de savoir si tu es dans la situation 1 ou 2.

Si $_POST['choix'] existe alors en fonction du choix on affiche ou non le formulaire de mot de passe.
Si $_POST['choix'] n’existe pas mais que $_POST['mot_de_passe'] existe on vérifie que le mot de passe est le bon.

Prends aussi l’habitude d’indenter, cela te fera gagner du temps.
Merci beaucoup, j'ai essayé et ça marche !!

Je joins le code modifié si jamais d'autre bloque comme moi

<!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
	
		if (isset($_POST['choix']) AND $_POST['choix']=='Choix1'){//Est ce que choix1 a été validé
		
			?>
			<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
				<p>
				<input type="password" name="mot_de_passe">
				<input type="submit" value="Valider">
				</form>
				</p>
			<?php		
			}
		
		else if (isset($_POST['choix']) AND $_POST['choix']=='Choix2'){//Est ce que choix2 a été validé
		
			echo "<h1>Choix2 :</h1>";
			echo "<p><strong>Choix2 marche</strong></p> ";
			}
		
		else if (isset($_POST['choix']) AND ($_POST['choix']=='Choix3' OR $_POST['choix']=="Choix3")){//Est ce que choix3 ou 4 a été validé
		
			echo '<p>Choix 3 et 4 non implementé</p>';
			}
		
		elseif (!isset($_POST['choix']) AND isset($_POST['mot_de_passe']) AND $_POST['mot_de_passe']=="azerty"){
	
			echo "<h1> LE MDP MARCHE HOURRA :</h1>";
			echo "<p><strong>Choix1 marche et mdp marche</strong></p> ";
			} 
    
    ?>
     
         
    </body>
</html>



Encore merci
Modifié par Heps (04 Jul 2013 - 17:22)