PHP : test IF qui ne fonctionne pas!

Surferdargen Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -  
Surferdargen Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   146 > Surferdargen Messages postés 48 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > artragis Messages postés 481 Date d'inscription   Statut Membre Dernière intervention  
 
D'accord, j'ai compris. Merci pour l'éclairage. Bon week-end.
0