If / elseif

Fermé
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 - 20 janv. 2009 à 18:41
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 21 janv. 2009 à 16:28
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 ;)

13 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
20 janv. 2009 à 19:33
heu je suis bête...

if ($donnees['lieux1']=="USA"){

il ne faut pas oublier les quotes bien sûr ^^
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 janv. 2009 à 22:09
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";
1
Revan26914 Messages postés 1778 Date d'inscription dimanche 14 octobre 2007 Statut Contributeur Dernière intervention 15 octobre 2019 320
20 janv. 2009 à 22:11
ne sortira qu'un seul enregistrement il est inutile de faire une boucle while

Oui en effet, j'avais pas tout de suite fait attention au WHERE. ^^

0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
20 janv. 2009 à 19:13
echo $donnees['lieux1'];

avant ton if
0
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
20 janv. 2009 à 19:24
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
20 janv. 2009 à 19:30
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?
0
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
20 janv. 2009 à 19:38
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 ?
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
20 janv. 2009 à 20:08
c'est l'usage, je ne saurais te l'expliquer en détail, mais la fonction mysql_fetch_array te renvoi un tableau, il faut bien le balayer, donc on utilise while^^. Cette méthode ne m'a jamais fait défaut
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
20 janv. 2009 à 19:47
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.
0
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
20 janv. 2009 à 19:50
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.
0
Revan26914 Messages postés 1778 Date d'inscription dimanche 14 octobre 2007 Statut Contributeur Dernière intervention 15 octobre 2019 320
20 janv. 2009 à 20:16
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
0
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
20 janv. 2009 à 20:41
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 ;)
0
Revan26914 Messages postés 1778 Date d'inscription dimanche 14 octobre 2007 Statut Contributeur Dernière intervention 15 octobre 2019 320
20 janv. 2009 à 22:08
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()
?> 
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
20 janv. 2009 à 21:58
si tu écris :

print_r($donnees);

tu obtiens quoi ?
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
20 janv. 2009 à 22:21
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
0
killermano66 Messages postés 233 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 novembre 2010 41
21 janv. 2009 à 12:44
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.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 janv. 2009 à 16:28
essayes avec:

if (trim($donnees['lieux1'])=="USA")
0