Tableau PHP couleur alterné

Résolu/Fermé
Mopire Messages postés 23 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 6 juin 2011 - 13 mai 2011 à 10:31
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 13 mai 2011 à 15:22
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 mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
13 mai 2011 à 10:43
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 mai 2011 à 10:53
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 mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
13 mai 2011 à 11:06
c'est pas faux ; )

ca dépend de la taille et de l'utilisation de l'appli^^
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
13 mai 2011 à 11:50
Voui, j'ai mis +1 quand même ^^
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
13 mai 2011 à 10:45
$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 jeudi 14 avril 2011 Statut Membre Dernière intervention 6 juin 2011
13 mai 2011 à 11:24
Merci a tous vos code marche très bien.
0
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
13 mai 2011 à 12:59
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 mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
13 mai 2011 à 14:04
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 jeudi 14 avril 2011 Statut Membre Dernière intervention 6 juin 2011
13 mai 2011 à 14:32
Oui j'ai garder la première méthode celle de Zep3k!GnO
0
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
Modifié par mpmp93 le 13/05/2011 à 15:23
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