Changement de couleur [Résolu/Fermé]

Signaler
-
 manureva2b -
Bonjour,

Cela fait plusieurs jours que je cherche en lisant différent forum mais cela ne marche pas pour mon cas (ou plus tôt je n'arrive pas à les adapter).

Voici mon problème:

je fais une requête sql et le résultat arrive dans un tableau (jusque là OK, hors je souhaiterais qu'une ligne sur deux soit colorée en vert et l'autre en blanc.

voici mon code :

 connexion à la base ...

 $sql = "SELECT ville,DATE_FORMAT(date, '%d-%m-%Y') as datefr,nom,descriptif,adresse,code_postal,heure,contact FROM T_evenement WHERE ville = '".$ville."' AND date >= CURDATE() ORDER BY date ASC";
        $query = mysql_query($sql) or die( 'Erreur' );
        $result = mysql_query($query);

        // Recuperation des resultats
        while ( $list = mysql_fetch_array( $query )) 
        {
                $Ville = $list[0];
				$Datefr = $list[1];
				$Nom = $list[2];
				$Descriptif = $list[3];
				$Adresse = $list[4];
				$Code_postal = $list[5];
				$Heure = $list[6];
				$Contact = $list[7];
				
				
				echo "<tr>\n
				<td align=\"center\">$Datefr</td>\n
				<td align=\"center\">$Nom</a></td>\n
				<td>$Descriptif</td>\n
				<td>$Adresse</a></td>\n
				<td align=\"center\">$Code_postal</td>\n
				<td align=\"center\">$Ville</td>\n
				<td align=\"center\">$Heure</td>\n
				<td>$Contact</td>\n
				</tr>\n";

        }

// Deconnexion de la base de donnees
        mysql_close($idSql);
}
?> 




Par avance merci



4 réponses

Messages postés
137
Date d'inscription
lundi 22 mars 2010
Statut
Contributeur
Dernière intervention
3 septembre 2014
29
Salut.
Essaye avec ça :

<style type="text/css">    
 .even { background: white; }    
 .odd { background: green; }    
</style>    

<?php    
$sql = "SELECT ville,DATE_FORMAT(date, '%d-%m-%Y') as datefr,nom,descriptif,adresse,code_postal,heure,contact FROM T_evenement WHERE ville = '" . $ville . "' AND date >= CURDATE() ORDER BY date ASC";    
$query = mysql_query($sql) or die('Erreur');    
$result = mysql_query($query);    
$i = 0;    
// Recuperation des resultats    
while ($list = mysql_fetch_array($query)) {    
 $Ville = $list[0];    
 $Datefr = $list[1];    
 $Nom = $list[2];    
 $Descriptif = $list[3];    
 $Adresse = $list[4];    
 $Code_postal = $list[5];    
 $Heure = $list[6];    
 $Contact = $list[7];    


 echo "<tr class='" . ( ($i % 2 == 0) ? 'even' : 'odd' ) . "'>\n    
    <td align=\"center\">$Datefr</td>\n    
    <td align=\"center\">$Nom</a></td>\n    
    <td>$Descriptif</td>\n    
    <td>$Adresse</a></td>\n    
    <td align=\"center\">$Code_postal</td>\n    
    <td align=\"center\">$Ville</td>\n    
    <td align=\"center\">$Heure</td>\n    
    <td>$Contact</td>\n    
    </tr>\n";    
 $i++;    
}    
?>    


En gros, tu places une variable $i (ou autre) qui te serviras de compteur. A chaque tour de boucle, tu incrémentes la variable de 1 ( $i++ ).

Ensuite, tu vérifie que le compteur est paire ou pas.
Pour ça, tu peux utiliser le modulo ( % ), qui permet de récupérer le reste d'une division. Si $i % 2 donne 0, c'est que la ligne est paire.
( http://php.net/manual/fr/language.operators.arithmetic.php )

Suivant ce que retourne le modulo, tu appliques la classe "even" ou "odd" à la ligne à passer en couleur.

Après, il ne reste plus qu'à appliquer un peu de CSS sur les classes.


Sinon, il y a une méthode beaucoup plus simple, c'est d'utiliser le pseudo sélecteur css3 :nth-child.
( http://www.w3.org/Style/Examples/007/evenodd )
<style type="type/css">    
        tr:nth-child(even) {background: white;}    
        tr:nth-child(odd) {background: green;}    
</style>    


Le seul problème, c'est que ce sélecteur n'est pas reconnu par les anciens navigateurs ( IE < 9 par exemple ).

En espérant avoir pu t'éclairer un peu.
Bonsoir vincebzh

Merci beaucoup pour ton code et surtout tes explication, cela marche nikel.

bonne soirée.
Messages postés
137
Date d'inscription
lundi 22 mars 2010
Statut
Contributeur
Dernière intervention
3 septembre 2014
29
De rien. Bonne soirée.
Bonjour vincebzh

Je me permet de reposer une petite question car sur mon site j'ai un formulaire afin de rentrer une date (qu'on retrouve dans le résultat de ma requete cf : code du dessus) et dans mon formulaire je suis obligé de l'écrire en date anglaise et cela n'est pas pratique du tout.

Comment puis je faire pour l'avoir en fr?

par avance merci