Changement de couleur

Résolu/Fermé
manureva2b - 13 janv. 2012 à 20:43
 manureva2b - 14 janv. 2012 à 09:17
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

vincebzh Messages postés 137 Date d'inscription lundi 22 mars 2010 Statut Contributeur Dernière intervention 7 mai 2013 29
Modifié par vincebzh le 13/01/2012 à 22:23
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.
( https://www.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.
0
Bonsoir vincebzh

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

bonne soirée.
0
vincebzh Messages postés 137 Date d'inscription lundi 22 mars 2010 Statut Contributeur Dernière intervention 7 mai 2013 29
13 janv. 2012 à 22:19
De rien. Bonne soirée.
0
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
0