Colorer les lignes d'un tableau suivant une condition

Résolu/Fermé
Signaler
Messages postés
3
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
14 avril 2016
-
Messages postés
1331
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
26 janvier 2017
-
Bonjour à tous!

Je suis débutante dans le php et je me suis lancé dans un projet. mais actuellement je rencontre un problème vers la fin de celui-ci.

En fait je gère des produits qui sont enregisterés dans ma base de données et je voudrai faire une alerte c'est à dire lorsque la quantite de produit est inférieure ou égale a la quantité seuil toute la ligne se met en rouge et sinon la ligne est au vert.

ma table produit contient la désignation, le prix unitaire, la quantité et la quantité seuil

voici un appercu de ceque j'ai dejà eu a essayer mais il ne marche pas


<div>
<h1 align="center">Table des produits</h1>
<table border="1" align="center">

<style>
.lignecoloree {
background-color:#ccc;
}
.lignenormale {
background-color:olive;
}
</style>
<?php
mysql_connect("localhost","root","");
mysql_select_db("gestion_stock");
$seuil = mysql_query("SELECT* FROM produit");
echo "<tr>
<th>Designation</th>
<th>Prix Unitaire</th>
<th>Quantité</th>
<th>Quantité Seuil</th>
</tr>";?>
<tr class="<?php echo isset($seuils['designation']) && $seuil['quantité'] >$seuils['quantite_seuil'] ? 'lignecoloree' : 'lignenormale';?>">
<td><?php echo $seuil['designation']; ?></td>
<td><?php echo $seuil['pu']; ?></td>
<td><?php echo $seuil['quantite']; ?></td>
<td><?php echo $seuil['quantite_seuil']; ?></td>
</tr>


</table>

</div>



le code ci-dessus affiche l'entete du tableau mais pas son contenu. et il ne tient compte que du css de la ligne_normale.

votre aide me sera vraiment précieuse. merci d'avance.

3 réponses

Messages postés
1331
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
26 janvier 2017
227
Salut

Tu as un problème d’encadrement ( parenthèse), un isset dans une condition ternaire me parait étrange

Ce code devrait fonctionner

<?php 
if(isset($seuils['designation'])){
	
	echo  ($seuil['quantité'] >$seuils['quantite_seuil'] ? 'lignecoloree' : 'lignenormale');	
}

?>



Sinon tu devrais utiliser mySQLi car mySQL est obsolète


//Pour se connecter
$mysqli = new mysqli("localhost", "root", "", "gestion_stock");

//Exemple de select avec mySQLi
$reqSeuil = $mysqli->query("SELECT* FROM produit");
$dnSeuil = mysqli_fetch_array($reqSeuil);



tu débute en php si tu as l'intention d’approfondir une fois que tu maîtrise tout cela passe au modèle MVC car dans le milieu pro tu verra jamais des requêtes php avec de l'HTML ^^
c'est du plus..

--
Messages postés
3
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
14 avril 2016

j'ai modifier le code avec les modifications le voici

<div>
<h1 align="center">Table des produits</h1>
<table border="1" align="center">

<style>
.lignecoloree {
background-color:red;
}
.lignenormale {
background-color:blue;
}
</style>
<?php
$mysqli = new mysqli("localhost", "root", "", "gestion_stock");

//Exemple de select avec mySQLi
$reqSeuil = $mysqli->query("SELECT* FROM produit");
$dnseuil = mysqli_fetch_array($reqSeuil);
echo "<tr>
<th>Designation</th>
<th>Prix Unitaire</th>
<th>Quantité</th>
<th>Quantité Seuil</th>
</tr>";
if(isset($dnseuils['designation'])){

$classe=$dnseuil['quantité']<=$dnseuil['quantite_seuil'] ? 'lignecoloree' : 'lignenormale';
?>
<tr class="<?php echo $classe; ?>">
<td><?php echo $dnseuil['designation']; ?></td>
<td><?php echo $dnseuil['pu']; ?></td>
<td><?php echo $dnseuil['quantite']; ?></td>
<td><?php echo $dnseuil['quantite_seuil']; ?></td>
</tr>
<?php }?>


</table>

</div>




mais il ne donne toujour pas . je sais pa si je m'y prend mal.
Messages postés
3
Date d'inscription
mercredi 13 avril 2016
Statut
Membre
Dernière intervention
14 avril 2016

j'ai trouver la solution j'ai opéré tes modif ici et j'avais oublié la boucle while maintenant ca marche

<div>
<h1 align="center">Table des produits</h1>
<table border="1" align="center">

<style>
.lignecoloree {
background-color:#CC0033;
}
.lignenormale {
background-color:#33FFCC;
}
</style>
<?php
$mysqli = new mysqli("localhost", "root", "", "gestion_stock");

//Exemple de select avec mySQLi
$reqSeuil = $mysqli->query("SELECT* FROM produit");
echo "<tr>
<th>Designation</th>
<th>Prix Unitaire</th>
<th>Quantité</th>
<th>Quantité Seuil</th>
</tr>";
while($dnseuil = mysqli_fetch_array($reqSeuil)){
$classe=isset($dnseuil['designation']) && $dnseuil['quantite']<=$dnseuil['quantite_seuil'] ? 'lignecoloree' : 'lignenormale';?>
<tr class="<?php echo $classe; ?>">
<td><?php echo $dnseuil['designation']; ?></td>
<td><?php echo $dnseuil['pu']; ?></td>
<td><?php echo $dnseuil['quantite']; ?></td>
<td><?php echo $dnseuil['quantite_seuil']; ?></td>
</tr>
<?php } ?>

</table>

</div>


merci pour l'aide.
Messages postés
1331
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
26 janvier 2017
227
C'est exactement ça !

précision pour mySQLi plus précisément

$reqSeuil
$dnSeuil

n'est pas une norme juste "ma" façon de faire

dans $reqSeuil le req signifie requête et
dans $dnSeuil le dn pour données

on stock la requête dans $req et le retour du fetch array dans $dn, tu peux évidement les appeler comme tu veux, c'est juste une manière d’éclaircir :)