TABLEAU <TD> mysql_fetch_row : comment alterner les couleurs avec la colon

Petit nouveau ! | 2 Messages

23 oct. 2007, 22:01

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

23 oct. 2007, 22:45

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;
}
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 4039 Messages

23 oct. 2007, 22:48

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:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Petit nouveau ! | 2 Messages

24 oct. 2007, 15:41

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 oct. 2007, 15:44

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 ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...