Afficher une ligne en couleur selon une condition

Fermé
gmoscilla Messages postés 13 Date d'inscription vendredi 1 juin 2018 Statut Membre Dernière intervention 4 juin 2018 - Modifié le 1 juin 2018 à 22:00
gmoscilla Messages postés 13 Date d'inscription vendredi 1 juin 2018 Statut Membre Dernière intervention 4 juin 2018 - 4 juin 2018 à 14:31
Bonjour,
je débute en programmation et je voudrais afficher une ligne en couleur selon si la valeur de st est inférieure à la valeur de tp, sinon je la laisse en couleur normale.
Je vous donne le code que j'ai testé je pense que c'est pas loin mais pour l'instant rien ne marche.
$sql=" SELECTprodid, tp, st, 
  FROM produit
  LEFT JOIN stock ON produit.prodid =stock.prodid
  LEFT JOIN min ON stock.prodid = min.prodid;

     $vm_columns = array(
   "prodid"       =>array("header"=>"Id",         "type"=>"label", "width"=>"130px", "align"=>"center",   "wrap"=>"nowrap", "text_length"=>"-1", "case"=>"normal"),
   "tp"       =>array("header"=>"Tp",     "type"=>"label", "width"=>"130px", "align"=>"center",   "wrap"=>"nowrap", "text_length"=>"-1", "case"=>"normal"),
   "st"       =>array("header"=>"St",  "type"=>"label", "width"=>"130px", "align"=>"center",   "wrap"=>"nowrap", "text_length"=>"-1", "case"=>"normal");
 
 

$data= $mysqli->query($sql);
 while($dnseuil = mysqli_fetch_array($data))
   {
    if($dnseuil["st"]<=$dnseuil["tp"])
    {
     $classe =  '#FF0000' ;
     echo '<td style="background-color: #FF0000">'; 
    }
    else
    {
     
     $classe = '#FFFFFF';
     echo '<td>'; 
    }
   } 


EDIT : Ajout des balises de code (jordane)
merci !
A voir également:

2 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
4 juin 2018 à 08:46
Je viens de voir que tu avais mélangé le style procédural et le style objet ...
$data= $mysqli->query($sql);

while($dnseuil = mysqli_fetch_array($data))


Devient :
$data= $mysqli->query($sql);

while($dnseuil = $data->fetch_array(MYSQLI_ASSOC))

1
gmoscilla Messages postés 13 Date d'inscription vendredi 1 juin 2018 Statut Membre Dernière intervention 4 juin 2018
4 juin 2018 à 09:37
il n'aime pas non plus : Fatal error: Call to a member function fetch_array() on boolean in C:..
Je ne sais plus quoi faire !
0
gmoscilla Messages postés 13 Date d'inscription vendredi 1 juin 2018 Statut Membre Dernière intervention 4 juin 2018
4 juin 2018 à 09:40
Alors apparemment cela venait de ma requête sql qui ne retournait aucun résultat donc là je n'ai plus d'erreur, en revanche je n'ai aucune ligne qui s'affiche en couleur et pourtant je devrais en avoir...
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > gmoscilla Messages postés 13 Date d'inscription vendredi 1 juin 2018 Statut Membre Dernière intervention 4 juin 2018
4 juin 2018 à 10:19
Comme indiqué dans ma première réponse :

Fais un clic-droit sur le TD dans ton navigateur et selectionne "inspecter" (ou examiner selon ton navigateur) et regarde le code html qui est généré dans ton navigateur...

Et bien entendu... montre nous ce que ça donne.....
0
gmoscilla Messages postés 13 Date d'inscription vendredi 1 juin 2018 Statut Membre Dernière intervention 4 juin 2018
4 juin 2018 à 10:31



J'ai ce genre de choses
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
4 juin 2018 à 10:42
alors oui... mais ce qui serait bien c'est de déplier les petites flèches à coter pour y trouver les TD ... et ainsi voir leur code.
Une autre solution est d'afficher le code source de la page ( CTRL + U en général) et chercher le code du tableau et des TD dedans et nous le coller ici...
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié le 1 juin 2018 à 22:12
Bonjour,

Déjà... il manque une double quote à la fin de ta variable $sql. ainsi qu'une parenthèse à la fin de ton array !

Ensuite.. tu créés une variables "$classe" mais tu ne l'utilises pas. (d'ailleurs.. pourquoi ta class est une couleur ???

Après... st et tp ... sont des champs de quel type dans ta bdd ? Du varchar ? du long ? du int ? une date ???
Si tu fais ceci :

$vm_columns = array(
            "prodid" =>array("header"=>"Id"
                            ,"type"=>"label"
                            ,"width"=>"130px"
                            ,"align"=>"center"
                            ,"wrap"=>"nowrap"
                            ,"text_length"=>"-1"
                            ,"case"=>"normal"),
            "tp" =>array("header"=>"Tp"
                        ,"type"=>"label"
                        ,"width"=>"130px"
                        ,"align"=>"center"
                        ,"wrap"=>"nowrap"
                        ,"text_length"=>"-1"
                        ,"case"=>"normal"),
            "st" =>array("header"=>"St"
                        , "type"=>"label"
                        ,"width"=>"130px"
                        ,"align"=>"center"
                        ,  "wrap"=>"nowrap"
                        ,"text_length"=>"-1"
                        ,"case"=>"normal")
           );
                         
 
$sql="SELECT prodid
            ,tp
            ,st
      FROM produit P
      LEFT JOIN stock S ON P.prodid =S.prodid
      LEFT JOIN min  M ON S.prodid = M.prodid";

$data= $mysqli->query($sql);

while($dnseuil = mysqli_fetch_array($data))  {
  $color = $dnseuil["st"]<=$dnseuil["tp"] ? '#FF0000' : ''; 
  $classe = $dnseuil["st"]<=$dnseuil["tp"] ? '#FFFFFF' : ''; 
  echo '<td style="background-color: '.$color.'" 
            class="'.$classe.'"
            data-st="'.$dnseuil["st"].'"  
            data-sp="'.$dnseuil["sp"].'">'; 
}

Fais un clic-droit sur le TD dans ton navigateur et selectionne "inspecter" (ou examiner selon ton navigateur) et regarde le code html qui est généré dans ton navigateur...

0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
1 juin 2018 à 22:12
0
gmoscilla Messages postés 13 Date d'inscription vendredi 1 juin 2018 Statut Membre Dernière intervention 4 juin 2018
2 juin 2018 à 18:27
Merci pour la réponse et pour ces remarques. Oui en effet j'avais oublié des parenthèses et des quotes merci!
Ensuite pour les st et tp ce sont des int, ils représentent des quantités. Et ce que je souhaitais faire c'était faire en sorte que la ligne de mon produit pour lequel son st est inférieur au tp s'affiche en couleur et que sinon il reste normal.
Pour la variable classe c'est parce que j'ai essayé de stocker cela dans une variable mais cela ne va pas.
Mais donc est-ce que c'est possible de le faire avec le code que j'ai là ou pas du tout ?
Merci
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié le 2 juin 2018 à 20:42
Tu as testé le code que je t'ai donné et regardé le code html généré dans ton navigateur ??
0
gmoscilla Messages postés 13 Date d'inscription vendredi 1 juin 2018 Statut Membre Dernière intervention 4 juin 2018
4 juin 2018 à 08:29
Oui j'ai testé avec ton code mais cela ne marche pas il me répond : mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:...
et pour le code html j'ai regardé mais je ne sais pas trop comment m'en servir ensuite pour faire en sorte que cela marche...
0