Tableau PHP couleur alterné

Résolu/Fermé
Signaler
Messages postés
23
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
6 juin 2011
-
Messages postés
6650
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
-
Bonjour,

J'ai un tableau qui affiche ma base de donné, mais comment je peux l'arrange pour pour avoir des color alterné par ligne.

<?
 mysql_connect("", "", "");
               mysql_select_db("");

$select = 'SELECT Nom_Entreprise,nom,prenom,Adresse_Email,Compte_Active FROM Comptes_Utilisateurs';
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

if($total) {
    // debut du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Nom Entreprise</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>Nom</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Prenom</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>Emain</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>Prenom</u></b></td>';
      echo '</tr>'."\n";
    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
		echo '<td bgcolor="#CCCCCC">'.$row["Nom_Entreprise"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["nom"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["prenom"].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row["Adresse_Email"].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row["Compte_Active"].'</td>';
      echo '</tr>'."\n";
    }
    echo '</table>'."\n";

}
else echo 'Pas d\'enregistrements dans cette table...';

mysql_free_result($result);

?>

6 réponses

Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
38
Bonjour,

vive les booléens!!

un joli petit booléén

$bool=false;

while($row = mysql_fetch_array($result)) {

if(bool)
{
        echo '<tr>';
		echo '<td bgcolor="#CCCCCC">'.$row["Nom_Entreprise"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["nom"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["prenom"].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row["Adresse_Email"].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row["Compte_Active"].'</td>';
      echo '</tr>'."\n";
}
else
{
 echo '<tr>';
		echo '<td bgcolor="#00FF00">'.$row["Nom_Entreprise"].'</td>';
        echo '<td bgcolor="#00FF00">'.$row["nom"].'</td>';
        echo '<td bgcolor="#00FF00">'.$row["prenom"].'</td>';
		echo '<td bgcolor="#00FF00">'.$row["Adresse_Email"].'</td>';
		echo '<td bgcolor="#00FF00">'.$row["Compte_Active"].'</td>';
      echo '</tr>'."\n";
}
$bool=!$bool;
    }




voila, a chaque tour de boucle le bool prend la valeur qui lui est opposée donc de vrai a faux et inversement et si il est vrai tu met une couleur si il est faux, une autre
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 004
Bonjour,

Cette méthode marche, bien sûr, mais est à éviter sur le long terme (duplication de code == maintenance complexe).
La solution donnée par Zep3k!GnO est plus adaptée :)

Xavier
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
38
c'est pas faux ; )

ca dépend de la taille et de l'utilisation de l'appli^^
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 004
Voui, j'ai mis +1 quand même ^^
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
203
$sColor1 = "#CCCCCC";
$sColor2 = "#00FF00";
$bColor  = true;
while($row = mysql_fetch_array($result)) {
        if($bColor){
             $bColor  = false;
             $sColor  = $sColor1;
        }else{
             $bColor  = true;
             $sColor  = $sColor2;
        }
        echo '<tr>';
		echo '<td bgcolor="'.$sColor.'">'.$row["Nom_Entreprise"].'</td>';
        echo '<td bgcolor="'.$sColor.'">'.$row["nom"].'</td>';
        echo '<td bgcolor="'.$sColor.'">'.$row["prenom"].'</td>';
		echo '<td bgcolor="'.$sColor.'">'.$row["Adresse_Email"].'</td>';
		echo '<td bgcolor="'.$sColor.'">'.$row["Compte_Active"].'</td>';
      echo '</tr>'."\n";
    }
Messages postés
23
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
6 juin 2011

Merci a tous vos code marche très bien.
Messages postés
6650
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 315
Bonjour,

Il y a deux autres moyens ne faisant pas appel à PHP:
https://html5.immo-scope.com/article/html5_table_colorerUneLigneSurDeux

La première fait appel à du css

la seconde fait appel à un petit script javascript exploitant les fonctions de JQuery

A+
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
38
ouai enfin le css pose des problèmes de compatibilité de navigateur et le JS est désactivable (et pas forcement justifié ici)

je préfère le php^^
Messages postés
23
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
6 juin 2011

Oui j'ai garder la première méthode celle de Zep3k!GnO
Messages postés
6650
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 315
Alors voici une manière de coder HTML/PHP qui mutualise la coloration au niveau de TR et non au niveau de TD. remarquez que j'ai mis en commentaire le code SQL à mettre après SELECT qui garantit de sortir les n champs à afficher. Si vous voulez modifier l'ordre des champs ou changer le nombre de champs, il suffit de toucher aux champs de SELECT, le code HTML restera inchangé:

<?php  
/** 
 * Il faut mettre en SELECT la liste des champs dans l'ordre dans lequel on va les afficher: 
 * SELECT Nom_Entreprise, nom, prenom, Adresse_email, Compte_Active FROM ..... 
*/ 

$sColor1 = "#CCCCCC"; 
$sColor2 = "#00FF00"; 
$bColor  = true; 
?> 

<table> 
    <thead> 
        <tr> 
            <td>.....</td> 
            <!-- ici les autres en-têtes de colonne --> 
        </tr> 
    </thead> 
    <tbody> 
    <?php while($row = mysql_fetch_array($result)): ?> 
        <?php 
        $bColor=!$bColor; 
        $sColor = $sColor1; 
        if ($bColor) { $sColor  = $sColor1; } 
        ?> 
        <tr style="background-color: <?php echo $sColor; ?>"> 
            <?php foreach($row AS $key => $val): ?> 
            <td><?php echo $val; ?></td> 
            <?php endforeach; ?> 
        </tr> 
    <?php endwhile; ?> 
    </tbody> 
</table>


A+