Tableau PHP couleur alterné

Résolu
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

  1. 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
    1. 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
      0
    2. c'est pas faux ; )

      ca dépend de la taille et de l'utilisation de l'appli^^
      0
    3. Voui, j'ai mis +1 quand même ^^
      0
  2. $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";
        }
    
    0
    1. Merci a tous vos code marche très bien.
      0
      1. 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^^
        0
        1. Oui j'ai garder la première méthode celle de Zep3k!GnO
          0
          1. 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+
            0