|
|
|
|
Lignes de couleur dans tableau PHP
Dernière réponse le 21 déc 2008 à 11:06:55 Miko73, le 9 aoû 2007 à 22:37:30Bonjour à tous,
Voici la difficulté à laquelle je me heurte : j'ai un tableau en PHP qui affiche des données extraites d'une base Access. Le voici (en simplifié) :
1 | 336
2 | 336
3 | 334
4 | 333
5 | 333
6 | 333
7 | 332
L'idée est la suivante : je souhaite avoir de la même couleur les lignes qui contiennent la même valeur.
Ex ici : les deux lignes 336 en jaune, puis la 334 en bleu, puis à nouveau les trois lignes 333 en jaune, puis la 332 en bleu, etc... Ceci afin d'améliorer la lisibilité du tableau en regroupant les éléments qui vont ensemble. Le tableau sera toujours trié pour que les éléments qui se ressemblent soient regroupés. Cela simplifie je pense le travail.
Voici mon code :
...
$requete = "SELECT NumeroCommande FROM [t DetailCommandes]";
$req= odbc_exec( $cnx, $requete );$i=1;
?>
<BR><BR><table border=1>
<? while ($val = odbc_fetch_array($req)) { ?>
<tr <? if (($i % 2) == 0) echo "bgcolor=\"#FFFFFF\""; else echo "bgcolor=\"#99CCCC\"";?>>
<td><? echo $i; ?></td>
<td><? echo $val["NumeroCommande"]; ?></td>
</tr>
<? $i++; } ?></table>
Ce code là ne me permet de n'obtenir qu'une ligne sur 2 de couleur différente.
Alors que je souhaite vérifier si le numéro de commande de la ligne en cours est le même que celui de la ligne précédente. Si oui, je garde la même couleur que la ligne précédente, sinon je met une deuxième couleur. Est-ce une bonne idée ? Quelqu'un aurait-il un bout de code à me proposer ou une autre solution ?
Merci d'avance à ceux qui prendront le temps de me répondre !
Miko
Configuration: Windows XP Firefox 2.0.0.6
Tu mémorise la valeur de la ligne précedente et tu testes:
<?php $old_val=""; // init pour la première ligne $array_color=("0"=>"#FFFFFF","1"=>"#99CCCC", etc........ tu en mets assez); while ($val = odbc_fetch_array($req)) { if ($i=="1") $old_val=$val["NumeroCommande"]; // init pour la première ligne if ($val["NumeroCommande"]==$old_val="") { $color=$array_color[0]; }else{ array_shift($array_color); $color=$array_color[0]; } $old_val=$val["NumeroCommande"]; ?> <tr <?php echo "bgcolor=$color"; ?>> <td><?php echo $i; ?></td> <td><?php echo $val["NumeroCommande"]; ?></td> </tr> <?php $i++; } ?> </code> Je n'ai pas testé, ce n'est qu'une piste. Une petite remarque: utilises tjs les tags <?php ?> au lieu de <? ?> |
Après une nuit de sommeil qqs erreurs dans mon precedent post:
<?php
$old_val=""; // init pour la première ligne
$array_color=Array("0"=>"#FFFFFF","1"=>"#99CCCC", etc........ tu en mets assez);
while ($val = odbc_fetch_array($req)) {
if ($i=="1") $old_val=$val["NumeroCommande"]; // init pour la première ligne
if ($val["NumeroCommande"]==$old_val="") {
//si meme val on prend la premiere de l'array
$color=$array_color[0];
}else{
// sinon si val diff on depile une couleur du debut de l'array
$depil=array_shift($array_color);
array_push($array_color,$depil); //et on la remet a la fin de l'array
$color=$array_color[0];// et on prend la premiere qui vient
}
$old_val=$val["NumeroCommande"];//memo pour le tour suivant
?>
<tr <?php echo "bgcolor=$color"; ?>>
<td><?php echo $i; ?></td>
<td><?php echo $val["NumeroCommande"]; ?></td>
</tr>
<?php $i++; } ?> |
Un très grand merci, Alain !
<?php
$old_val=""; // init pour la première ligne
$array_color=Array("0"=>"#FFFFFF","1"=>"#99CCCC");
while ($val = odbc_fetch_array($req)) {
if ($i=="1") $old_val=$val["NumeroCommande"]; // init pour la première ligne
if ($val["NumeroCommande"]==$old_val) {
//Ta proposition qui ne fonctionnait pas était : if ($val["NumeroCommande"]==$old_val="")
//si meme val on prend la premiere de l'array
$color=$array_color[0];
}else{
// sinon si val diff on depile une couleur du debut de l'array
$depil=array_shift($array_color);
array_push($array_color,$depil); //et on la remet a la fin de l'array
$color=$array_color[0];// et on prend la premiere qui vient
}
$old_val=$val["NumeroCommande"];//memo pour le tour suivant
?>
|
Répondre à Alain42
|

