Echo ne s'affiche pas
Résolu
momo-ben2A
Messages postés
113
Statut
Membre
-
momo-ben2A Messages postés 113 Statut Membre -
momo-ben2A Messages postés 113 Statut Membre -
bonsoir a tous.
Je m'entraine en php et je rencontre acutellement un probleme.
Lorsque je rentre le mot de passe et que je selectionne la couleur que je prefere sa marche.
Mais le probleme c'est que l'echo de la ligne numero 56 ne veux pas s'afficher et je n'arrive pas a comprendre pourquoi.
Pouvez vous m'aider ?
Dans l'attente d'une reponse de votre part je vous remercie d'avance.
Voici le script
<!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" >
<head>
<title>Bienvenue sur le future site de momo-ben2A </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form method="post" action="choix_des_couleurs.php">
<input type="password" name="mdp"/><br/>
<input type="submit"/><input type="reset"/>
</form>
<?php if ($_POST['mdp'] == 'momo-ben2A')
{
?>
<form method="post" action="choix_des_couleurs.php">
<label>quelle est votre couleur preferer</label><br/>
<select name="couleur">
<optgroup label="couleurs">
<option value="bleu">bleu</option>
<option value="rouge">rouge</option>
<option value="jaune">jaune</option>
<option value="vert">vert</option>
<option value="orange">orange</option>
</optgroup>
</select>
<input type="submit" value="Valider"/>
</form>
<?php
if (isset($_POST['couleur']))
{
mysql_connect ('localhost', 'root', '');
mysql_select_db ('choix_internaute');
$choix_couleur_internaute = mysql_real_escape_string(htmlspecialchars($_POST['couleur']));
mysql_query("INSERT INTO choix VALUES ('', '$choix_couleur_internaute')");
mysql_close();
?>
<?php
mysql_connect ('localhost', 'root', '');
mysql_select_db ('choix_internaute');
$recup = mysql_query ("SELECT choix_par_internaute FROM choix ORDER BY id DESC ") or die (mysql_error());
$donnees = mysql_fetch_array($recup);
echo 'Votre couleur preferée est le : '. $donnees['choix_par_internaute'];
mysql_close();
}
?>
<br/>
pour revenir, cliquez <a href="choix_internautes.html">ici</a>
<?php
} ?>
</body>
</html>
Je m'entraine en php et je rencontre acutellement un probleme.
Lorsque je rentre le mot de passe et que je selectionne la couleur que je prefere sa marche.
Mais le probleme c'est que l'echo de la ligne numero 56 ne veux pas s'afficher et je n'arrive pas a comprendre pourquoi.
Pouvez vous m'aider ?
Dans l'attente d'une reponse de votre part je vous remercie d'avance.
Voici le script
<!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" >
<head>
<title>Bienvenue sur le future site de momo-ben2A </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form method="post" action="choix_des_couleurs.php">
<input type="password" name="mdp"/><br/>
<input type="submit"/><input type="reset"/>
</form>
<?php if ($_POST['mdp'] == 'momo-ben2A')
{
?>
<form method="post" action="choix_des_couleurs.php">
<label>quelle est votre couleur preferer</label><br/>
<select name="couleur">
<optgroup label="couleurs">
<option value="bleu">bleu</option>
<option value="rouge">rouge</option>
<option value="jaune">jaune</option>
<option value="vert">vert</option>
<option value="orange">orange</option>
</optgroup>
</select>
<input type="submit" value="Valider"/>
</form>
<?php
if (isset($_POST['couleur']))
{
mysql_connect ('localhost', 'root', '');
mysql_select_db ('choix_internaute');
$choix_couleur_internaute = mysql_real_escape_string(htmlspecialchars($_POST['couleur']));
mysql_query("INSERT INTO choix VALUES ('', '$choix_couleur_internaute')");
mysql_close();
?>
<?php
mysql_connect ('localhost', 'root', '');
mysql_select_db ('choix_internaute');
$recup = mysql_query ("SELECT choix_par_internaute FROM choix ORDER BY id DESC ") or die (mysql_error());
$donnees = mysql_fetch_array($recup);
echo 'Votre couleur preferée est le : '. $donnees['choix_par_internaute'];
mysql_close();
}
?>
<br/>
pour revenir, cliquez <a href="choix_internautes.html">ici</a>
<?php
} ?>
</body>
</html>
A voir également:
- Echo ne s'affiche pas
- Echo discord - Forum Casque et écouteurs
- Le clavier de mon telephone ne s'affiche plus - Guide
- Ma clé usb ne s'affiche pas - Guide
- @Echo off ✓ - Forum Windows 7
- Echo lors d'un appel samsung - Forum Mobile
6 réponses
Bonjour
Dans ton script, tu as deux formulaires
Dans le premier, tu saisis le mot de passe et dans le second tu choisis la couleur.
Mais tu ne peux envoyer qu'un seul formulaire à la fois.
Donc, soit, le mot de passe est saisi, soit la couleur, mais pas les deux.
Or ta ligne if (isset($_POST['couleur'])) est à l'intérieur du if ($_POST['mdp'] == 'momo-ben2A'), donc elle n'est jamais vraie.
Solution possible : rajouter le champ le champ mdp dans le formulaire de saisie de la couleur, en champ de type hidden :
Dans ton script, tu as deux formulaires
Dans le premier, tu saisis le mot de passe et dans le second tu choisis la couleur.
Mais tu ne peux envoyer qu'un seul formulaire à la fois.
Donc, soit, le mot de passe est saisi, soit la couleur, mais pas les deux.
Or ta ligne if (isset($_POST['couleur'])) est à l'intérieur du if ($_POST['mdp'] == 'momo-ben2A'), donc elle n'est jamais vraie.
Solution possible : rajouter le champ le champ mdp dans le formulaire de saisie de la couleur, en champ de type hidden :
...</select> <input type="hidden" name="mdp" value="<?php echo $_POST['mdp']?>" /> <input type="submit" value="Valider"/>...
Je te remercie pour ton aide. Mais il y a une chose que je ne comprend pas dans ton explication. C'est cet extrait
"ta ligne if (isset($_POST['couleur'])) est à l'intérieur du if ($_POST['mdp'] == 'momo-ben2A'), donc elle n'est jamais vraie. ". Je ne comprend pas car lorsque l'on choisi la couleur, la variable est créee donc la condition est valable.
Voila c'est sa que j'ai pas compris.
Je te remercie d'avance pour ton explication
"ta ligne if (isset($_POST['couleur'])) est à l'intérieur du if ($_POST['mdp'] == 'momo-ben2A'), donc elle n'est jamais vraie. ". Je ne comprend pas car lorsque l'on choisi la couleur, la variable est créee donc la condition est valable.
Voila c'est sa que j'ai pas compris.
Je te remercie d'avance pour ton explication
Lorsqu'on choisit la couleur, $_POST['couleur'] est créée, mais pas $_POST['mdp'] car mdp ne provient pas du même formulaire que couleur.
Quand tu exécutes ton script, la première fois, aucune des deux variables n'exite, tu n'affiches que le formulaire pour le mot de passe.
Quand tu saisis ton mot de passe, et que tu cliques sur le bouton submit, tu envoies le formulaire ce qui exécute le script une deuxième fois. Là, $_POST['mdp'] est défini mais pas encore $_POST['couleur'], tu es d'accord ? Ton script affiche maintenant (si le mot de passe est bon) le formulaire de choix de couleur
Tu choisis la couleur et tu cliques sur le bouton submit. Tu envoies donc le formulaire de choix de couleur, ce qui exécute ton script une troisième fois. Le formulaire que tu envoies contient bien couleur, mais il ne contient pas mdp. Donc $_POST['mdp'] n'est pas défini.
Car chaque exécution du script est indépendante des pércédentes, du moins elle ne conserve pas les variables. Pour les conserver, tu peux utiliser les sessions, oun pour un cas simple comme le tien, envoyer la donnée manquante comme champ caché.
Quand tu exécutes ton script, la première fois, aucune des deux variables n'exite, tu n'affiches que le formulaire pour le mot de passe.
Quand tu saisis ton mot de passe, et que tu cliques sur le bouton submit, tu envoies le formulaire ce qui exécute le script une deuxième fois. Là, $_POST['mdp'] est défini mais pas encore $_POST['couleur'], tu es d'accord ? Ton script affiche maintenant (si le mot de passe est bon) le formulaire de choix de couleur
Tu choisis la couleur et tu cliques sur le bouton submit. Tu envoies donc le formulaire de choix de couleur, ce qui exécute ton script une troisième fois. Le formulaire que tu envoies contient bien couleur, mais il ne contient pas mdp. Donc $_POST['mdp'] n'est pas défini.
Car chaque exécution du script est indépendante des pércédentes, du moins elle ne conserve pas les variables. Pour les conserver, tu peux utiliser les sessions, oun pour un cas simple comme le tien, envoyer la donnée manquante comme champ caché.
et donc le hidden permet de se souvenir du mot de passe dans le script couleur se qui remplirai donc la premiere condition c'est bien cela ? Et si j'ai bien compris a chaque fois qu'on envoie un formulaire, tout reviens a 0 (corrige moi si je me trompe).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je crois que tu as tout compris.
Chaque fois qu'on envoie un formulaire, le script démarre de zéro, il n'a aucun souvenir des exécutions précédentes. Comme n'importe quel programme de n'importe quel langage, d'ailleurs (il . Si tu veux tenir compte des exécutions précédentes, à toi de te débrouiller pour "mettre de côté" ce qui risque de te resservir. Dans ton cas, le champ hidden est tout à fait adapté.
Chaque fois qu'on envoie un formulaire, le script démarre de zéro, il n'a aucun souvenir des exécutions précédentes. Comme n'importe quel programme de n'importe quel langage, d'ailleurs (il . Si tu veux tenir compte des exécutions précédentes, à toi de te débrouiller pour "mettre de côté" ce qui risque de te resservir. Dans ton cas, le champ hidden est tout à fait adapté.