If / elseif
killermano66
Messages postés
233
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonsoir,
J'ai un petit soucis avec ce script :
<?php
include('../connection.php');
$requete_selection = mysql_query('SELECT * FROM sortie WHERE id="1"') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$donnees = mysql_fetch_array($requete_selection);
if ($donnees['lieux1']==USA){
echo '<img src="../../pictures/minius.png">';
}
elseif ($donnees['lieux1']==EU) {
echo '<img src="../../pictures/minifr.png">';
}
elseif ($donnees['lieux1']==JAP) {
echo '<img src="../../pictures/minijp.png">';
}
echo $donnees['jeux1'] . ' - ' . $donnees['date1'] . '<br />';
mysql_close()
?>
Tout fonctionne, sauf mon bloc if/elseif qui doit afficher normalement une image selon le contenu d'un champ d'une table de ma BDD. Mais malgré que celle-ci soit bien renseignée, rien ne s'affiche et je ne comprend absolument pas le problème. A noter que le chemin des images est bien le bon, j'ai vérifié au cas ou, on ne sait jamais.Je m'en remet donc a vos lumières en espérant trouver une réponse. Je vous remercies ;)
J'ai un petit soucis avec ce script :
<?php
include('../connection.php');
$requete_selection = mysql_query('SELECT * FROM sortie WHERE id="1"') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$donnees = mysql_fetch_array($requete_selection);
if ($donnees['lieux1']==USA){
echo '<img src="../../pictures/minius.png">';
}
elseif ($donnees['lieux1']==EU) {
echo '<img src="../../pictures/minifr.png">';
}
elseif ($donnees['lieux1']==JAP) {
echo '<img src="../../pictures/minijp.png">';
}
echo $donnees['jeux1'] . ' - ' . $donnees['date1'] . '<br />';
mysql_close()
?>
Tout fonctionne, sauf mon bloc if/elseif qui doit afficher normalement une image selon le contenu d'un champ d'une table de ma BDD. Mais malgré que celle-ci soit bien renseignée, rien ne s'affiche et je ne comprend absolument pas le problème. A noter que le chemin des images est bien le bon, j'ai vérifié au cas ou, on ne sait jamais.Je m'en remet donc a vos lumières en espérant trouver une réponse. Je vous remercies ;)
Configuration: Windows Vista Firefox 3.0.5
13 réponses
-
heu je suis bête...
if ($donnees['lieux1']=="USA"){
il ne faut pas oublier les quotes bien sûr ^^ -
Bonsoir,
petite précision:
comme la requette 'SELECT * FROM sortie WHERE id="1"'
ne sortira qu'un seul enregistrement il est inutile de faire une boucle while
seul un$donnees = mysql_fetch_array($requete_selection);
suffit
on fait while quand il y a plusieurs enregistrement extraits
par contre si le test if ($donnees['lieux1']=="USA") ne fonctionne pas c'est que $donnees['lieux1'] ne contient pas exactement USA
n'y a -t-il pas un espace qui traine et qui est difficile à voir ?
faire echo "donnee lue=".$donnees['lieux1']."fin de lecture"; -
echo $donnees['lieux1'];
avant ton if -
Bah non, ça m'écrit le contenue de la BDD donc JAP ou EU ou USA mais ça ne m'affichera pas l'image. C'est la structure if /elseif qui déconne à mon avis. Merci.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
while($donnees = mysql_fetch_array($requete_selection)){// fais un balayage de tableau avec while^^ sans ça, il n'y a rien si je ne me trompe //vu que tu n'utilise que la valeur d'une seule variable, utilise un switch switch($donnees['lieux1']){ case 'USA': echo "<img src='../../pictures/minius.png'/>"; //tu remarqueras du xHTML break; case 'EU': echo "<img src='../../pictures/minifr.png'/>"; //et une utilisation des guillemets plus cohérente. break; case 'JAP': echo "<img src='../../pictures/minijp.png'/>"; break; }//fin du switch echo $donnees['jeux1'] . ' - ' . $donnees['date1'] . '<br />'; }//on ferme le tableau
moins de caractères, moins de ligne, code optimisé et propre^^
alors? -
J'ai déjâ essayé ça aussi et ça ne fonctionne pas. Merci.
Pour ce qui est de ta solution smokingbird pareil, ça ne m'affiche aucunement les images. Et il n'y a pas besoin de boucle while pour traiter les donnée d'une BDD juste de la fonction mysql_fetch_array() non ? -
ah ça par contre, même ça ne résout pas le problème, ça n'est pas à "essayer", mais c'est à faire.
Si tu ne le fais pas, ton code ne marcheras pas à coup sûr.
Essaye ta page sur IE, est-ce que tu as un petit carré avec une croix rouge ?
Si c'est le cas, c'est juste que le chemin de tes images n'est pas bon. -
Oki pour les quotes alors.
Déjâ testé sous rien ne me dit que le chemin d'accés de mes images n'est pas corrects. Puis j'ai tout de même testé en dur en entrant direct le lien des image et ça s'affiche nikel. Merci encore. -
Bonsoir,
Pas de message d'erreur ? A mon avis c'est les conditions qui ne sont pas vérifiées. Essai ce code et dis moi ce qui s'affiche:<?php include('../connection.php'); $requete_selection = mysql_query('SELECT * FROM sortie WHERE id="1"') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); while ($donnees = mysql_fetch_array($requete_selection)) { if ($donnees['lieux1']=='USA') echo '<img src="../../pictures/minius.png">'; elseif ($donnees['lieux1']=='EU') echo '<img src="../../pictures/minifr.png">'; elseif ($donnees['lieux1']=='JAP') echo '<img src="../../pictures/minijp.png">'; else echo 'Le probleme vient de tes conditions ;-)'; echo $donnees['jeux1'] . ' - ' . $donnees['date1'] . '<br />'; } mysql_close() ?>
Cordialement
Revan -
Alors ça m'affiche le contenue du else :
Le probleme vient de tes conditions ;-).
Pourrais tu m'expliquer mon erreur car je ne la comprend absolument pas. Ce petit bout de code me paraissait trés simple lorsque je l'ai écrit et je me rend compte que j'ai fait un peu n'importe quoi.
Merci à toi ;)-
Je dirai que le problème vient du contenu de ta table. Le contenu ne remplit pas les conditions, c'est-à-dire qu'aucun lieux1 ayant pour id 1 n'est égal soit à USA, soit EU ou soit JAP.
Peux-tu nous mettre le résultat de ce code:
<?php include('../connection.php'); $requete_selection = mysql_query('SELECT * FROM sortie WHERE id="1"') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); while ($donnees = mysql_fetch_array($requete_selection)) { echo $donnees['lieux1'].'<br/>'; } mysql_close() ?>
-
-
si tu écris :
print_r($donnees);
tu obtiens quoi ? -
bonsoir , si tu fait comme ça
je pense que le while ne s'impose pas car tu met une clause where id=1, est un id en autoincrement?
<?php include('../connection.php'); $requete_selection = mysql_query('SELECT lieux1 , date1 FROM sortie WHERE id="1"') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); list($donnees , $date)= mysql_fetch_array($requete_selection); switch($donnees) { case "USA": echo '<img src="../../pictures/minius.png">'; break; case "EU": echo '<img src="../../pictures/minifr.png">'; case "JAP": echo '<img src="../../pictures/minijp.png">'; break; } echo $donnees . ' - ' . $date . '<br />'; mysql_close() ?>
j'ai juste modifié un peu les quotes et les doubles quotes -
Alors,
echo "donnee lue=".$donnees['lieux1']."fin de lecture"; me renvoi
donnee lue= USA fin de lecture
donc j'ai bien l'impression qu'il y a un espace mais je ne vois pas d'ou il peut bien sortir. J'utilise pour entrer les données dans la BDD une liste déroulante :
<select name="lieux1">
<option value="<?php echo $donnees['lieux1']; ?>"><?php echo $donnees['lieux1']; ?></option>
<option value="USA">USA</option>
<option value="EU">EU</option>
<option value="JAP">JAP</option>
</select>
Et puis de toute façon si je rajoute cette espace comme ceci :
f ($donnees['lieux1']==" USA"){
echo '<img src="../../pictures/minius.png">';
}
Ca ne me donne rien.
Merci encore.