Page 1 sur 1

TABLEAU <TD> mysql_fetch_row : comment alterner les co

Posté : 23 oct. 2007, 22:01
par Mathieu M
Bonjour,

voici la page:
http://nem6.musique.umontreal.ca/~nemma ... repete.php

voici ma demande;
je veux alterner les couleurs mais si la date est la même que la colonne précédente je veux la même couleur...

alors ça fait bien 6 heures que je bosse la dessus sans solution...
voici le script de la dernière function (qui ne marche toujours pas)..
<php?
function altcouleur($date)
{
static $col;
static $colcouleur;
static $coldate;
$bgcolor1 = "#e5e5e5";
$bgcolor2 = "#fffff";


if (($coldate==$date) && ($col == $bgcolor1)){
        $col = $bgcolor1;
        $coldate = $date;
}
if (($coldate==$date) && ($col == $bgcolor2)){
        $col = $bgcolor2;
        $coldate = $date;
}
if (($coldate!=$date) && ($col == $bgcolor1)){
        $col = $bgcolor2;
        $coldate = $date;
}
    
if (($coldate!=$date) && ($col == $bgcolor2)){
        $col = $bgcolor1;       
        $coldate = $date;
}
return $col;
}
?>
merci pour toute aide!

Mathieu

Posté : 23 oct. 2007, 22:45
par @rthur
Bonjour,

Une solution serait d'initialiser une variable à la fin de ta fonction altcouleur() qui enregistre la date qui vient de passer, ainsi le coup suivant, tu pourras regarder si la date en paramètre est == à la date précédemment enregistrée.
Et tu fais de même avec la couleur pour savoir quelle était la dernière couleur utilisée.

Voila un exemple, codé rapidement (donc non testé):
function altcouleur($date) {
     $bgcolor1 = "#e5e5e5";
     $bgcolor2 = "#fffff"; 
     
     if ($date==$date_old) {
          // C'est la même date que précédemment => on conserve la même couleur
          $col=$col_old;
     }else{
          // Ce n'est pas la même date que précédemment => on alterne la couleur
          if ($col_old==$bgcolor1) {
               $col=$bgcolor2;
          }else{
               $col=$bgcolor1;
          }
     }
     
     $date_old=$date;
     $col_old=$col;
     return $col;
}

Posté : 23 oct. 2007, 22:48
par Berzemus
Des colonnes ? plutôt des rangées, non ?



Si je comprends bien, tu fournis la date, et la fonction retourne la couleur de fond à utiliser ?

Je vois pas trop d'ou tu tien la valeur de $col à la première itération. Donc pour la récuperer, ça va être dur.

Sans tester, en récupérant ta fonction:
<?php
function altcouleur($date) {
$bgcolor1 = "#e5e5e5";
$bgcolor2 = "#fffff";
static $col = $bgcolor1;
static $coldate = $date;

  if ($coldate!=$date) {
    if ($col == $bgcolor1)
        $col = $bgcolor2;
    else
        $col = $bgcolor1;
   }
$coldate = $date;
return $col;
}
?>
edit: zut, grillé :cry:

solution

Posté : 24 oct. 2007, 15:41
par Mathieu M
Bonjour @rthur et Berzemus,

merci pour vos script... voici la solution

function altcouleur($date) {
$bgcolor1 = "#e5e5e5";
$bgcolor2 = "#fffff";
static $col;
static $coldate;

if ($coldate!=$date) {
if ($col == $bgcolor1)
$col = $bgcolor2;
else
$col = $bgcolor1;
}
$coldate = $date;
return $col;
}

Mathieu

Posté : 24 oct. 2007, 15:44
par Ryle
Modération :
Mathieu M, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Et n'oublie pas de cliquer sur le bouton [Résolu] en haut du sujet ;)