Tableau PHP: lier une condition à un champ

Petit nouveau ! | 5 Messages

14 juin 2008, 07:34

Bonjour à Tous,

Je récupère le résultat d’une requête SQL sous forme de tableau avec 7 colonnes. Jusque la tout se passe bien. J’aimerai introduire une condition sur le champ7 (champ « salaire » dans mon exemple.). J’aimerai afficher en ROUGE toutes les lignes dont le champ « salaire » est supérieur à 2000. Toutes mes tentatives ont échouées. Quelqu’un connaît-il la solution ??

Voici ci-dessous les sources de mon exemple dans lesquelles je n’arrive pas à ajouter la condition de couleur ROUGE pour les lignes dont le champ 7 (salaire) est supérieur à 2000.

Par avance, merci de vos réponses.

<html>
<body>
<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'mabase';

// connection à ma base
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

//récupère tous les enregistrements et compte le nombre total de réponse
$select = 'SELECT * FROM t_Celebrite';
$resultat = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($resultat);


// Affichage de résultat sous forme de tableau.
if($total) {
// début du tableau
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche les titres de tous les champs
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Champ1</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Champ2</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Champ3</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Champ4</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Champ5/u></b></td>';
echo '<td bgcolor="#669999"><b><u>Champ6</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Salaire</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 7 colonnes
while($row = mysql_fetch_array($resultat)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row['Champ1'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['Champ2'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['Champ3'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['Champ4'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['Champ5'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['Champ6'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['Salaire'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($resultat);

?>
</body>
</html>
guyde

Mammouth du PHP | 1668 Messages

14 juin 2008, 09:22

<html> 
<body> 
<?php 
// information pour la connection à le DB 
$host = 'localhost'; 
$user = 'root'; 
$pass = ''; 
$db = 'mabase'; 

// connection à ma base 
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 
mysql_select_db($db) or die ('Erreur :'.mysql_error()); 

//récupère tous les enregistrements et compte le nombre total de réponse 
$select = 'SELECT * FROM t_Celebrite'; 
$resultat = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); 
$total = mysql_num_rows($resultat); 


// Affichage de résultat sous forme de tableau. 
if($total) { 
// début du tableau 
echo '<table bgcolor="#FFFFFF">'."\n"; 
// première ligne on affiche les titres de tous les champs 
echo '<tr>'; 
echo '<td bgcolor="#669999"><b><u>Champ1</u></b></td>'; 
echo '<td bgcolor="#669999"><b><u>Champ2</u></b></td>'; 
echo '<td bgcolor="#669999"><b><u>Champ3</u></b></td>'; 
echo '<td bgcolor="#669999"><b><u>Champ4</u></b></td>'; 
echo '<td bgcolor="#669999"><b><u>Champ5/u></b></td>'; 
echo '<td bgcolor="#669999"><b><u>Champ6</u></b></td>'; 
echo '<td bgcolor="#669999"><b><u>Salaire</u></b></td>'; 
echo '</tr>'."\n"; 
// lecture et affichage des résultats sur 7 colonnes 
while($row = mysql_fetch_array($resultat)) { 
echo '<tr>'; 
echo '<td bgcolor="#CCCCCC">'.$row['Champ1'].'</td>'; 
echo '<td bgcolor="#CCCCCC">'.$row['Champ2'].'</td>'; 
echo '<td bgcolor="#CCCCCC">'.$row['Champ3'].'</td>'; 
echo '<td bgcolor="#CCCCCC">'.$row['Champ4'].'</td>'; 
echo '<td bgcolor="#CCCCCC">'.$row['Champ5'].'</td>'; 
echo '<td bgcolor="#CCCCCC">'.$row['Champ6'].'</td>'; 
if($row['Salaire']>2000) echo '<td bgcolor="red">'.$row['Salaire'].'</td>';
else echo '<td bgcolor="red">'.$row['Salaire'].'</td>';
echo '</tr>'."\n"; 
} 
echo '</table>'."\n"; 
// fin du tableau. 
} 
else echo 'Pas d\'enregistrements dans cette table...'; 

// on libère le résultat 
mysql_free_result($resultat); 

?> 
</body> 
</html>
Avec Les balises ça va mieu ^^

Code : Tout sélectionner

[php][/php]
Je ne connais pas les balises de couleur (x)HTML par coeur, mais je penses que tu as compris...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

14 juin 2008, 09:50

Si tu veux afficher en ROUGE toutes les lignes dont le champ « salaire » est supérieur à 2000.
 
if($row['Salaire']>2000) {
    $color = "red";
}
else {
    $color = "#CCCCCC";
}
En suite, tu places $color dans l'attribut bgcolor.

bgcolor : colore le fond d'une balise
Pour colorer le texte, il faut utiliser un style style='color: red'

Cela donnerait :
Coloration du fond (bgcolor):
// lecture et affichage des résultats sur 7 colonnes 
while($row = mysql_fetch_array($resultat)) { 

//déterminer la couleur de la ligne (rouge si salaire>2000)
if($row['Salaire']>2000) {
    $color = "red";
}
else {
    $color = "#CCCCCC";
}

//afficher
echo '<tr>'; 
echo '<td bgcolor="'.$color.'">'.$row['Champ1'].'</td>'; 
echo '<td bgcolor="'.$color.'">'.$row['Champ2'].'</td>'; 
echo '<td bgcolor="'.$color.'">'.$row['Champ3'].'</td>'; 
echo '<td bgcolor="'.$color.'">'.$row['Champ4'].'</td>'; 
echo '<td bgcolor="'.$color.'">'.$row['Champ5'].'</td>'; 
echo '<td bgcolor="'.$color.'">'.$row['Champ6'].'</td>'; 
echo '<td bgcolor="'.$color.'">'.$row['Salaire'].'</td>';
echo '</tr>'."\n"; 
}  
ou bien pour la coloration du texte (style color):
// lecture et affichage des résultats sur 7 colonnes 
while($row = mysql_fetch_array($resultat)) { 

//déterminer la couleur de la ligne (rouge si salaire>2000)
if($row['Salaire']>2000) {
    $color = "red";
}
else {
    $color = "black";
}

//afficher
echo '<tr>'; 
echo '<td bgcolor="#CCCCCC" style="color: '.$color.'">'.$row['Champ1'].'</td>'; 
echo '<td bgcolor="#CCCCCC" style="color: '.$color.'">'.$row['Champ2'].'</td>'; 
echo '<td bgcolor="#CCCCCC" style="color: '.$color.'">'.$row['Champ3'].'</td>'; 
echo '<td bgcolor="#CCCCCC" style="color: '.$color.'">'.$row['Champ4'].'</td>';  
echo '<td bgcolor="#CCCCCC" style="color: '.$color.'">'.$row['Champ5'].'</td>'; 
echo '<td bgcolor="#CCCCCC" style="color: '.$color.'">'.$row['Champ6'].'</td>'; 
echo '<td bgcolor="#CCCCCC" style="color: '.$color.'">'.$row['Salaire'].'</td>'; 
echo '</tr>'."\n"; 
}  
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 514 Messages

15 juin 2008, 00:36

Si tu veux afficher en ROUGE toutes les lignes dont le champ « salaire » est supérieur à 2000.
 
if($row['Salaire']>2000) {
    $color = "red";
}
else {
    $color = "#CCCCCC";
}

Pis on en parle jamais assez : l'opérateur ternaire.
$color = $row['Salaire'] > 2000 ? 'red' : '#cccccc';
Qui fait gagner pas mal de lignes, et qu'est très lisible.