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

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