Condition de couleur en PHP (Rouge ou vert)

Petit nouveau ! | 7 Messages

04 déc. 2008, 11:10

RESOLU !


Bonjour,

Je debute en PHP et voici un des codes qui, selon un ami est cence fonctionner...
Je souhaiterais afficher un mot avec une condition en PHP.

Dans ma BDD le champ est : AVAILABLE ou UNAVAILABLE.
Je souhaiterais que dans le premier cas ca soit ecrit en Vert et dans le second, en rouge.

Voici mon code, biensur, je ne comprend pas ou est l'erreur...

<?php

$ourquery = mysql_query("SELECT * from XXXXX WHERE id=1") or die(mysql_error());
while($thef = mysql_fetch_array($ourquery))
{
?>
</p>
<p>&nbsp;</p>

<b style="color:
<?
{
	if ($thef == 'AVAILABLE')
		{
		echo "green";
		}
	else
		{
		echo "red";
		}
}
?>
">
<?php echo $thef["availability"]; ?></b>


<?php
}
?>
Le resultat que j'ai actuellement, est le mot : AVAILABLE ecrit en Rouge (pas logique) et en Gras (Encore moins logique vu que je n'ai pas de balises de style...)

Merci pour votre aide :)
Modifié en dernier par Gogad le 04 déc. 2008, 12:27, modifié 3 fois.

Mammouth du PHP | 1353 Messages

04 déc. 2008, 11:17

Bonjour,

$thef, le resultat de la requete pointe sur l'ensemble des colonnes sélectionnées, donc si tu veux la valeur il faut faire comme dans l'affichage, $thef["availability"] et non pas $thef tout court.

De plus je recommande d'utiliser <?php et non pas <? qui selon la config du serveur peut etre mal interprété.

Aussi apres une requete je conseil le "or die(mysql_error()); comme ca si la requete se passe mal le code s arrete et tu as le message d erreur...

Enfin tu as des {} que je ne comprend pas, sans instruction avant...

Suggestion pour ton code :
<?php

$ourquery = mysql_query("SELECT * from XXXXX WHERE id=1") or die(mysql_error()); 
while($thef = mysql_fetch_array($ourquery)) 
{ 
?> 
</p> 
<p>&nbsp;</p> 

<span style="color: 
<?php
if ($thef["availability"] == 'AVAILABLE') 
{ 
echo "green"; 
} 
else 
{ 
echo "red"; 
} 
?> 
"> 
<?php echo $thef["availability"]; ?></span> 


<?php 
} 
?> 
Sinon dis nous si ca affiche quelque chose, message d erreur ou au moins le texte ?

EDIT : pour le gras c'est normal tu es dans une balise <b> (comme bold : gras) met une balise <span></span> pour avoir un résultat "normal"
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 353 Messages

04 déc. 2008, 11:22

Bonjour.

Pour commencer, il est nécessaire d'éviter d'écrire "<?" et lui préférer "<?php".
Si les 2 fonctionnent, le premier n'est pas toujours supporté.

Quand à ton code, voici ce que j'aurais fait :
<?php
//On fait notre requete
$query = "SELECT YYYY FROM XXXX WHERE id=1";
$rsc = mysql_query($query);

//On prépare notre balise
$balise = '<span style="color:';

//On ajoute la bonne couleur
$res = mysql_fetch_assoc($rsc))
if($res['YYYY'] == 'available') $balise .= 'green';
else $balise .= 'red';

//On complète la balise et on la ferme
$balise .= ' ">'.$res['YYYY'].'</span>';
echo $balise;
?>
Quelques conseils :

1.
J'ai remarqué que tu fais $thef == 'AVAILABLE'.
Hors $thef est un tableau (vu que tu utilises la fonction mysql_fetch_array().

2.
Tu utilise mysql_fetch_array() mais apres tu fais $thef["availability"];
Ce n'est pas possible.
Mysql_fetch_array() renvoi un tableau dont les clés sont numérique : $thef[0], $thef[1] ...
Pour pouvoir faire ce que tu voulais, il faut utiliser mysql_fetch_assoc qui lui utilisera tes champs comme clés de ton tableau.

3.
Tu fais un "SELECT *", si tu n'as que quelques champs à récupérer, fait plutot un "SELECT champ1, champ2 ...", cela consommera moins de ressources.
Ce n'est pas obligatoire mais c'est une bonne habitude à prendre.

Mammouth du PHP | 1353 Messages

04 déc. 2008, 11:28

@Gogad : Tu as un bouton "Mettre résolu" en haut de la page qui permet d'inclure la balise [Résolu] dans le titre du message ;)

Petite précision sur le message de yaug : mysql_fetch_array() permet d'utiliser soit des index numérique soit le titre du champ, c'est une méthode mixte entre mysql_fetch_row() et mysql_fetch_assoc()
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 353 Messages

04 déc. 2008, 11:29

Au temps pour moi.
Ne l'ayant pas utilisé depuis un bon moment j'avais oublié ce détail :D

Petit nouveau ! | 7 Messages

04 déc. 2008, 11:29

Merci pour vos conseils :)