PHP : test IF qui ne fonctionne pas!
Surferdargen
Messages postés
51
Statut
Membre
-
Surferdargen Messages postés 51 Statut Membre -
Surferdargen Messages postés 51 Statut Membre -
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?
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?
Configuration: Windows Vista Internet Explorer 7.0
1 réponse
-
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.-
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.- 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.
-