Général

Les PCRE

Les POSIX

Pratique

Linux

Spécial php

Les billets de fred

Alternance de couleurs

Lorsque l'on présente des données dans un tableau, il arrive souvent que l'on ait besoin d'alterner les couleurs de chaque ligne pour les rendre plus lisibles.

Habituellement, on utilise le modulo (reste de la division : "%") afin d'appliquer l'alternance.

Par exemple :
<?php
$i = 0;
while( .. ) {
  echo '<tr class="ligne',  ($i % 2),  '"><td>./././.</td></tr>';
  $i++;
}
?>

Voici la technique que personnellement j'utilise :
<?php
$couleurs = array( 'ligne1' => 'ligne2', 'ligne2' => 'ligne1' );
$couleur = 'ligne1';
while( .. ) {
  echo '<tr class="', ($couleur = $couleurs[ $couleur ]), '"><td>./././.</td></tr>';
}
?>

"Quel est l'intérêt ?" allez-vous me dire !

L'intérêt est que je peux changer l'alternance en modifiant le tableau dans lequel je peux mettre un grand nombre de couleurs à alterner, par exemple :
<?php
$couleurs = array( 'ligne1' => 'ligne2', 'ligne2' => 'ligne3', 'ligne3' => 'ligne4', 'ligne4' => 'ligne1' );
$couleur = 'ligne1';
while( .. ) {
  echo '<tr class="', ($couleur = $couleurs[ $couleur ]), '"><td>./././.</td></tr>';
}
?>

Comme vous pouvez le remarquer, le dernier élément "pointe" sur le premier. Ainsi, lorsque "$couleur" sera à "ligne4", la couleur suivante passera à "ligne4".

Avec cette technique si je change le tableau d'alternance, tout code qui l'utilise profitera de cette modification.

Sympa, non ?

Remarque : Olivier Plathey (Maître FPDF) vient de me proposer un mixe du modulo et du tableau, ce qui donne : <?php
$couleurs = array('ligne1', 'ligne2', 'ligne3', 'ligne4');
$nb = count($couleurs);

$i = 0;
while( .. ) {
  echo '<tr class="', $couleurs[ $i % $nb ], '"><td>./././.</td></tr>';
  $i++;
}
?> Ca me plait bien aussi comme solution, et le tableau est plus simple à gérer !

Par Frédéric Bouchery
ADAM Benjamin 2008 | Admin