[RESOLU] Mettre de la couleur sur une valeur en fonction de son contenu

Petit nouveau ! | 5 Messages

05 août 2021, 17:51

Salut tout le monde,

Tout d'abord, je pense qu'il est important d'annoncer la couleur : JE SUIS DÉBUTANT de chez DÉBUTANT !! :)
Après des années de recopiage des mêmes données d'une page HTML à une autre, j'ai décidé de commencer à travailler avec une BDD mySQL pour simplifier les modifications à effectuer sur mon site.

Après 2 semaines de recherche, j'ai enfin réussi à afficher dans mon site les valeurs de ma BDD de la façon suivante :

Code : Tout sélectionner

<?php $sql["serveur"]='*****'; $sql["login"]='*****'; $sql["pass"]='*****'; $sql["base"]='*****'; $sql["connect"]=mysql_connect($sql["serveur"],$sql["login"],$sql["pass"])or die ("Impossible de se connecter à la BDD, réessayez plus tard."); $sql["select_base"]=mysql_select_db($sql["base"],$sql["connect"])or die ("Erreur de connexion à la BDD."); $sql["connect"]; $sql["select_base"]; mysql_query("set charset 'utf8'"); $afficher=mysql_query("select * from EQUIPE"); while($affichage=mysql_fetch_array($afficher)) { echo ' <li> <div class="t-col width3 tbl-col">#</div> <div class="t-col width2"> '.$affichage["PRENOM"].' '.$affichage["NOM"].'</div> <div class="t-col width4 tbl-col"> '.$affichage["ETOILES"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["ETAT"].'</font></div> <div class="t-col width3 tbl-col"> '.$affichage["ADN"].'</div> <div class="t-col width4 tbl-col"> '.$affichage["PSD"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["ET"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["MATCHS"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["TOURNOIS"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["DETS"].'</div> </li> '; } mysql_close(); ?>

Cependant, depuis 2-3 jours, je cherche le moyen de mettre de la couleur sur une valeur en fonction de son contenu.
Exemple : Si la valeur 'ETAT' = 'IN', alors j'affiche 'IN' en vert, sinon en rouge.
Mais impossible de parvenir à ce résultat (et pourtant, croyez-moi, j'en ai fait des tests ^^).

J'ai tenté d'intégrer le code ci-dessous mais impossible de l'intégrer correctement. Si ça se trouve, il y a même de meilleure façon d'arriver à ce résultat mais pas trouvé (ou pas réussi).

Code : Tout sélectionner

if ($affichage["ETAT"] == 'IN') { echo '<font style="color:green;">IN</font>'; } else { echo '<font style="color:red;">OUT</font>'; }

Pouvez-vous m'aider ?
Merci d'avance à tous ceux qui me permettront d'avancer. :)

Mammouth du PHP | 2703 Messages

05 août 2021, 18:15

ou le dernier code a-t-il été ajouté ?
mis à part l'affreux usage de la balise font (à remplacer par span), cela doit fonctionner.

Petit nouveau ! | 5 Messages

06 août 2021, 09:29

Ah désolé pour le "font". Je vais le changer en "span".

Pour le moment, je l'ai placé à cet endroit :

Code : Tout sélectionner

<?php $sql["serveur"]='*****'; $sql["login"]='*****'; $sql["pass"]='*****'; $sql["base"]='*****'; $sql["connect"]=mysql_connect($sql["serveur"],$sql["login"],$sql["pass"])or die ("Impossible de se connecter à la BDD, réessayez plus tard."); $sql["select_base"]=mysql_select_db($sql["base"],$sql["connect"])or die ("Erreur de connexion à la BDD."); $sql["connect"]; $sql["select_base"]; mysql_query("set charset 'utf8'"); $afficher=mysql_query("select * from EQUIPE"); while($affichage=mysql_fetch_array($afficher)) { echo ' <li> <div class="t-col width3 tbl-col">#</div> <div class="t-col width2"> '.$affichage["PRENOM"].' '.$affichage["NOM"].'</div> <div class="t-col width4 tbl-col"> '.$affichage["ETOILES"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["ETAT"].'</font></div> <div class="t-col width3 tbl-col"> '.$affichage["ADN"].'</div> <div class="t-col width4 tbl-col"> '.$affichage["PSD"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["ET"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["MATCHS"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["TOURNOIS"].'</div> <div class="t-col width3 tbl-col"> '.$affichage["DETS"].'</div> </li> '; if ($affichage["ETAT"] == 'IN') { echo '<font style="color:green;">IN</font>'; } else { echo '<font style="color:red;">OUT</font>'; } } mysql_close(); ?>

Le problème c'est que ce n'est pas sa place mais impossible de trouver la solution pour le placer au niveau du champs '.$affichage["ETAT"].'
Ou bien, laissez la condition là où elle est et injecter la couleur au niveau du champs '.$affichage["ETAT"].'

Avatar du membre
Eléphant du PHP | 70 Messages

06 août 2021, 09:42

Salut, tu doit tout simplement mettre ta condition à la place de ton .$affichage["ETAT"]

Pour afficher du HTML, je te conseil de passer par l'échappement

Tu gagnera fortement en lisibilité !
" La révolution informatique fait gagner un temps fou aux Hommes, mais ils le passent avec leur ordinateur ! " by Khalil Assala

Mammouth du PHP | 2703 Messages

06 août 2021, 11:02

il faut regarder le code source généré (ctrl + u). un "in" après un </li> ne se voit pas forcément à l'écran dans l'affichage de la page.
des données dans un tableau doivent être dans <table></table>, pas dans <ul><li><div></div></li></ul>

Petit nouveau ! | 5 Messages

06 août 2021, 13:46

Merci de ta réponse Shadowwera.
Justement, je pense que mon problème de compréhension est là : Je n'arrive pas à faire "cohabiter" la partie PHP de la partie HTML. J'ai bien vu le lien mais j'ai tenté plusieurs essais et cela ne donne rien à part des erreurs :S .
Pourrais-tu me montrer un exemple stp ?
Merci d'avance.

Petit nouveau ! | 5 Messages

06 août 2021, 14:08

Merci de ta réponse or1.
Pour l'histoire des balises <ul><li><div>, c'est parce que j'ai conçu mon site en CSS de cette façon-là. Mais si vraiment c'est gênant, je peux le modifier.
Par contre, je n'ai pas compris l'histoire du "IN" après la balise <li> !? Car le seul "IN" qui est présent, c'est celui de la réponse possible dans la condition.
Pour le code source de la page, voici le lien :
[url]view-source:http://vacbasketdetente .free. fr/hall-of-fame2.php[/url] (en enlevant les espaces autour de ".free").
Merci d'avance.

Avatar du membre
Eléphant du PHP | 70 Messages

12 août 2021, 15:05

Salut Taz,

Voici un exemple de ce a quoi ressemblerais ta boucle while avec l'échappement :
while($affichage=mysql_fetch_array($afficher)) : ?>
  <li>
    <div class="t-col width3 tbl-col">#</div>
    <div class="t-col width2"><?php echo $affichage["PRENOM"].' '.$affichage["NOM"] ?></div>
    <div class="t-col width4 tbl-col"><?php echo $affichage["ETOILES"] ?></div>
    <div class="t-col width3 tbl-col">
      <?php if ($affichage["ETAT"] == 'IN') {
        echo '<font style="color:green;">IN</font>';
      } else {
        echo '<font style="color:red;">OUT</font>';
			} ?></div>
    <div class="t-col width3 tbl-col"><?php echo $affichage["ADN"] ?></div>
    <div class="t-col width4 tbl-col"><?php echo $affichage["PSD"] ?></div>
    <div class="t-col width3 tbl-col"><?php echo $affichage["ET"] ?></div>
    <div class="t-col width3 tbl-col"><?php echo $affichage["MATCHS"] ?></div>
    <div class="t-col width3 tbl-col"><?php echo $affichage["TOURNOIS"] ?></div>
    <div class="t-col width3 tbl-col"><?php echo $affichage["DETS"] ?></div>
  </li>
  
<?php endwhile; ?>
Tu remarquera que c'est beaucoup plus lisible ! Pour ta condition, je les simplement mis à la place de son affichage $affichage["ETAT"]

NB : Avec quel version programme tu ? Si tu apprend a Dev, je te conseille d'apprendre directement sur une version récente ( 7.4 au minimum ) car tu utilise beaucoup de fonction / balise qui sont obsolète comme mysql_fetch_array ( à remplacer par du mysqli ou PDO ) ou encore la balise <<font>

EDIT : Oups, j'avais oublié d'écho les valeurs ! #-o
" La révolution informatique fait gagner un temps fou aux Hommes, mais ils le passent avec leur ordinateur ! " by Khalil Assala

Petit nouveau ! | 5 Messages

13 août 2021, 17:39

MERCI MERCI MERCI Shadowwera !! :)

L'exemple est parfait !
1. C'est beaucoup plus clair à lire/écrire comme code.
2. Je comprends maintenant ce que c'est que l'échappement.

C'est vrai que j'utilise encore quelques balises HTML à l'ancienne mais je vais m'améliorer au fur et à mesure :)
Je ne peux pas dire que j'apprends à dev mais j'essaye de grandir mes compétences/connaissances. Cependant, tu as raison, autant apprendre tout de suite quelque chose de récent. Connais-tu un bon site sur lequel je peux me former en 7.4 ou supérieur stp ?

Encore MERCI !