IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

colorier ligne d'un tableau en fonction du resultat sql


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Par défaut colorier ligne d'un tableau en fonction du resultat sql
    Bonjour,

    je souhaiterais colorier les lignes d'un tableau en fonction du resultat de requetes sql.

    Le soucis est que la couleur de ligne X depend du resultat de ligne X-1 et X+1.

    Est-ce que qqn a une idee ?

    Merci d'avance

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Salut,

    si tu avais pris le temps de lire la Faq, tu aurais eu ta réponse

    Allez je suis de bonne humeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while($result = mysql_fetch_array($sql)) 
    {
      $couleur = ($result['ton_champ'] == x+1) ? "#CCCCCC" : "#FFFFFF";
      echo '<tr bgcolor="'.$couleur.'"><td>texte</td></tr>';
     
    }

  3. #3
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Allez, je me lance.
    Il y a surement plus élégant,
    mais ne serait-ce pas plutôt quelque chose
    de cet ordre
    que veut faire Inikolanta ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $result = array();
    while($result[] = mysql_fetch_array($sql)) 
    {
      if (count($result)==2) {
        // Première ligne
        $couleur = fonction de result[1]
        echo '<tr bgcolor="'.$couleur.'"><td>'.$result[0]['infos'].'</td></tr>';
      } else if (count($result) ==3) { 
        // Lignes suivantes
        $couleur = fonction result[0] et result[2]
        echo '<tr bgcolor="'.$couleur.'"><td>'.$result[1]['infos'].'</td></tr>';
        if (count($result)==3) array_shift($result);
      }
    }
     
    // Dernière ligne
    $couleur = fonction de result[0]
    echo '<tr bgcolor="'.$couleur.'"><td>'.$result[1]['infos'].'</td></tr>';
    Fred

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Par défaut
    C'est effectivement plus quelque chose dans ce genre la micetf. Car je sais comment colorier un tabeau. Je cherchais juste simplement un algorithme pour le faire.

    Le soucis avec ton code micetf, est que tu ne fais qu'une seule requete sql, hors je dois en faire plusieurs.
    J'ai essaye ca, mais ca ne marche pas comme je le voudrais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    function colorlign($change_color, $color_prev, $color){
    	$default ='';
    	$color_def="#FFFFFF";
     
    	if ($color) {
    		$color_def = $color_prev;
    	}
    	if (($change_color)AND($color_prev=="#C2DFFF")AND($color)) {
    		$color_def = "#99C68E";
    		$change_color = 0;
    		$color = 0;
    	}elseif (($change_color)AND($color_prev=="#99C68E")AND($color)) {
    		$color_def = "#C2DFFF";
    		$change_color = 0;
    		$color = 0;
    		}
    		$default = $color_def;
     
    	return $default;
    }
     
     
     
     
     
    while($row = mysql_fetch_array( $result1 )){
     
    	if ($lineread==0)
    	{
    	$lineread = 1;
            $date_time = $row['Date_time'];
    	}
    	else
    	{
     
    	$lineread = 0;
     
    	$date_next = $date_time;
    	$d1 = strtotime($date_next)+8;
    	$date_next = date("Y-m-d H:i:s", $d1);
    	$sql_sentence_count_in = "SELECT count(*) FROM backup_cvs WHERE `Date_time` BETWEEN '".$date_time."' AND '".$date_next."' ";
     
     
    	$result_in = mysql_query($sql_sentence_count_in) or die(mysql_error());
    	$result1_count_in = mysql_fetch_array($result_in) or die(mysql_error());
    	$nb_results_pre = $result1_count_in[0];
     
    	echo "<tr>";
    	echo "<td>";
    	echo $nb_results_pre;
    	if ($nb_results_pre == 2) {
     
    	$color = 1;
    	}
    	if (($nb_results_pre == 1)AND($nb_results_curr == 2)){
     
    	$color = 1;
    	}
    	//change color
    	if (($nb_results_curr == 1)AND($nb_results_pre == 2)) {
     
    	$color = 1;
    	$change_color = 1;
    	}
    	echo"</td>";
     
    	echo '<td style="background-color: '.colorlign($change_color, $color_prev, $color) .'">';
    	echo $date_time;
    	echo '</td>';
     
    	$date_next = $row['Date_time'];
    	$d1 = strtotime($date_next)+8;
    	$date_next = date("Y-m-d H:i:s", $d1);
     
     
    	$sql_sentence_count_in = "SELECT count(*) FROM backup_cvs WHERE `Date_time` BETWEEN '".$row['Date_time']."' AND '".$date_next."' ";
     
    	$result_in = mysql_query($sql_sentence_count_in) or die(mysql_error());
    	$result1_count_in = mysql_fetch_array($result_in) or die(mysql_error());
    	$nb_results_curr = $result1_count_in[0];
     
    	echo "<tr>";
     
    	echo "<td>";
    	echo $nb_results_curr ;
     
    	if (($nb_results_curr == 2)AND($nb_results_pre == 1)) {
     
    	$color = 1;
    	}
    	if ($nb_results_curr == 2) {
     
    	$color = 1;
    	}
    	if (($nb_results_curr == 2)AND($nb_results_pre == 1)) {
     
    	$color = 1;
    	$change_color = 1;
    	}
     
    	echo"</td>";
    	echo '<td style="background-color: '.colorlign($change_color, $color_prev, $color) .'">';
    	echo $row['Date_time'];
    	echo '</td></tr style="background-color: '.colorlign($change_color, $color_prev, $color) .'">';
     
    	$color_prev = colorlign($change_color, $color_prev, $color);
    merci d'avance pour votre aide

  5. #5
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    Bonjour,

    pour la coloration des lignes il est préférable d'utiliser des class CSS.

    votre code est loin d'être optimisé, il est préférable d'agir autrement (surtout évité d'interroger votre serveur de base de données à chaque fois que vous affichez une ligne.


    a+

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Par défaut
    Comment je peux faire pour utiliser des classes CSS dans ce cas ?

    j'aimerais vraiment améliorer mon code (et surtout le faire marcher), avez vous une idée ?

    merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/04/2010, 03h01
  2. [XL-2007] copier une une ligne d'un tableau en fonction de la valeur de la première cellule
    Par mentat dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/12/2009, 11h49
  3. Réponses: 6
    Dernier message: 13/05/2009, 22h46
  4. recopie en fonction du ligne d'un tableau
    Par cchampion2fr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/09/2008, 17h56
  5. Réponses: 1
    Dernier message: 28/03/2008, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo