PHP : test IF qui ne fonctionne pas!

Fermé
Surferdargen Messages postés 48 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 5 août 2010 - 19 avril 2008 à 10:03
Surferdargen Messages postés 48 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 5 août 2010 - 19 avril 2008 à 12:14
Bonjour,
je voudrais changer la couleur du fond d'écran en fonction du résultat d'un test if avec quelquechose du genre

if ($nombre<10) {"<bgcolor=red>";}
elseif (10<$nombre && $nombre<12) {"<bgcolor=blue";}
else {echo "<bgcolor=green>";}

avec les instructions ad-hoc avant et après!
Mais ça ne fonctionne pas. Pourquoi? Comment modifier cela pour que ça fonctionne? Merci et bon week-end?
A voir également:

1 réponse

_tonton Messages postés 2 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 19 avril 2008
19 avril 2008 à 10:47
Bonjour,

Dans votre exemple, vous faites des erreurs à la fois en HTML et en PHP.

Tout d'abord, en HTML la balise <bgcolor=...> n'existe pas. Il s'agit en fait d'un attribut applicable à la balise <body>.
ex : <body bgcolor="#dd0000">

Cependant, je vous suggère de ne plus utiliser ces propriétés HTML qui ont une utilité visuelle et d'utiliser à la place les propriétés CSS adéquates.
Ces propriétés peuvent être implémentées de deux façons :
- l'utilisation d'une feuille de style externe
- l'utilisation de la propriété HTML style qui permet de définir n'importe quelle règle CSS.

Dans votre exemple, on trouvera donc quelque chose de ce style :
<body style="background-color:#dd000;">


Concernant code PHP.
Dans le premier test, on exécute bgcolor=red pour toutes les valeurs inférieures à 10.
Dans le elseif, seules les valeurs supérieures ou égales à 10 sont donc tester. Or,la première partie du test n'autorise que les valeur inférieures à 10. Donc aucune de celles qui passent. bgcolor=blue n'est donc jamais exécuté.

En conclusion, voici un exemple possible d'implémentation de ce que vous voulez faire.
<?php
if ( $nombre<10 ) $color = '#f00';
elseif ( $nombre<12 )  $color = '#00f'; // uniquement 10 et 11 en fait
else  $color = '#0f0';
?>
<body style="background-color:<?php echo $color;?>">


Si vous souhaitez accumuler les elseif, je vous suggère de jeter un oeil vers la structure switch bien plus lisible à mon sens.

Cordialement.
0
Surferdargen Messages postés 48 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 5 août 2010
19 avril 2008 à 11:25
Merci beaucoup, ça fonctionne. Même si je ne suis pas d'accord avec ce que tu dis sur le elseif.
En effet, je veux que le nombre soit supérieur ou égal à 10 (10<=$nombre) et inférieur strictement à 12 (&& $nombre<12). J'ai donc écris :

elseif (10<=$nombre && $nombre<12) $couleur=green;

Et ça fonctione.
0
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 146 > Surferdargen Messages postés 48 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 5 août 2010
19 avril 2008 à 11:32
il ne l'a pas nié. en fait c'est juste inutile.

ton code dit
avec variable nombre en double
color en hexadécimale
si nombre<10
alors color = #code pour le rouge

sinon si nombre>=10 et nombre<12
alors color = #code pour le bleu

sinon color = #code pour le vert

fin si

la partie mise en gras est inutile car tu demande à l'ordinateur de tester une chose qui l'a déjà été. donc c'est plus lourd. c'est plus une faute de style que de programmation.
0
Surferdargen Messages postés 48 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 5 août 2010 > artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010
19 avril 2008 à 12:14
D'accord, j'ai compris. Merci pour l'éclairage. Bon week-end.
0