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
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
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>'; }
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde
Mes Articles/Critiques :
Merise - Guide pratique
PHPExcel
PostgreSQL : Administration et exploitation d'une base de données
PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle
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 ?
Fred
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>';
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:
merci d'avance pour votre aide
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);
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+
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
Partager