If / elseif

killermano66 Messages postés 249 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 ;)

13 réponses

ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
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 5413 Statut Membre 894
 
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 1821 Statut Contributeur 320
 
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 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
echo $donnees['lieux1'];

avant ton if
0
killermano66 Messages postés 249 Statut Membre 41
 
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 911 Statut Membre 58
 
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 249 Statut Membre 41
 
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 911 Statut Membre 58
 
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 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
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 249 Statut Membre 41
 
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 1821 Statut Contributeur 320
 
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 249 Statut Membre 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 1821 Statut Contributeur 320
 
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 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
si tu écris :

print_r($donnees);

tu obtiens quoi ?
0
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
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 249 Statut Membre 41
 
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 5413 Statut Membre 894
 
essayes avec:

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