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
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
A voir également:
- PHP : test IF qui ne fonctionne pas!
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Br php ✓ - Forum PHP
- Expert php - Télécharger - Langages
- Php echo image ✓ - Forum PHP
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
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 :
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.
Si vous souhaitez accumuler les elseif, je vous suggère de jeter un oeil vers la structure switch bien plus lisible à mon sens.
Cordialement.
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.
19 avril 2008 à 11:25
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.
19 avril 2008 à 11:32
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.
19 avril 2008 à 12:14