Tableau PHP couleur alterné

Résolu
Mopire Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   -
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);

?>
A voir également:

6 réponses

Gremy87 Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   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
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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
Gremy87 Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   38
 
c'est pas faux ; )

ca dépend de la taille et de l'utilisation de l'appli^^
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Voui, j'ai mis +1 quand même ^^
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
$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
Mopire Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
Merci a tous vos code marche très bien.
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gremy87 Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   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^^
0
Mopire Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
Oui j'ai garder la première méthode celle de Zep3k!GnO
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
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