CHangement de fond une fois sur deux

CHangement de fond une fois sur deux - PHP - Programmation

Marsh Posté le 12-02-2007 à 22:27:38    

Bonjour,
 
Dans les résultats d'une requête qui apparaissent dans un tableau  j'aimerai qu'une ligne sur deux possède un fond blanc, et l'autre un fond mauve, mais je ne vois pas bien comment m'y prendre pour signaler cela...
 
Qqun peut il m'aider ?
 
Merci d'avance

Reply

Marsh Posté le 12-02-2007 à 22:27:38   

Reply

Marsh Posté le 12-02-2007 à 22:37:35    

Code :
  1. $color = 0;
  2. foreach ($tab as $key => $value)
  3. {
  4. if ($color%2==0)
  5. $couleur = "#FFFFFF" //Cherche le code hexa pour le mauve
  6. else
  7. $couleur = "#000000"
  8. echo "<TD style='background-color=".$couleur." '>"
  9. $color ++
  10. }


libre à toi de faire deux styles css différents pour chaque ligne et de mettre le nom de la classe en parametre


Message édité par Alisteroid le 12-02-2007 à 22:40:41
Reply

Marsh Posté le 12-02-2007 à 22:47:47    

ok merci bien


Message édité par oli1987 le 12-02-2007 à 22:52:34
Reply

Marsh Posté le 12-02-2007 à 22:59:27    

j'ai un peu du mal ...
Je ne sais pas comment paramètrer mon $array ...
 

Code :
  1. <?php
  2.   $color = 0;
  3.   $array = array( '');
  4.   foreach ($array as $key => $value){
  5.   if ($color%2==0){
  6.   $couleur = "#c891ff";
  7.   } else {
  8.   $couleur = "#ffffff";
  9.   }
  10.   echo "<td width='100' style='background-color=".$couleur." '>";
  11.   }
  12.   ?>

Reply

Marsh Posté le 12-02-2007 à 23:40:57    

Bah le array représente les données que tu veux mettre dans le tableau.
Si ça viens de la base de données, tu n'as pas besoin du array() (qui sera fait par un fetch_array par exemple) et utilise le while() a la place du foreach().


Message édité par Surfoo le 12-02-2007 à 23:41:37
Reply

Marsh Posté le 12-02-2007 à 23:54:05    

en effet, il y a du mieux  
 

Code :
  1. <?php       
  2. $compteur = 0;     
  3. $array = mysql_fetch_array($result85, MYSQL_NUM);       
  4. foreach ($array as $key => $value){     
  5.   if ($compteur%2 === 0){     
  6.      $couleur = '#4C0099';     
  7.   } else {     
  8.      $couleur = '#ffffff';     
  9.   }       
  10.   echo '<tr style="background-color:', $couleur ,'">';
  11.   $compteur++;   
  12. }     
  13. ?>


 
Mais mtnt, la moitié des résultats ne s'affichent plus. A quoi est-ce dû ?

Reply

Marsh Posté le 12-02-2007 à 23:57:29    

Pas besoin d'un modulo pour ça, suffit d'un booléen (à moins d'avoir besoin aussi du compteur)... Enfin bref peu importe.
 

Citation :


Mais mtnt, la moitié des résultats ne s'affichent plus. A quoi est-ce dû ?


 
J'sais pas, dans ton tableau la couleur d'écriture est blanche ? [:dawa]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-02-2007 à 00:01:14    

non meme pas. Les cellules qui sont vides sont moins hautes...
 

Code :
  1. <?php       
  2. $compteur = 0;     
  3. $array = mysql_fetch_array($result85, MYSQL_NUM);       
  4. foreach ($array as $key => $value){     
  5.   if ($compteur%2 === 0){     
  6.      $couleur = '#4C0099';     
  7.   } else {     
  8.      $couleur = '#ffffff';     
  9.   }       
  10.   echo '<tr style="background-color:', $couleur ,'">';
  11.   $compteur++;   
  12. }     
  13. ?>

Reply

Marsh Posté le 13-02-2007 à 00:12:49    

En même temps t'affiches rien là... fais voir ton code entier.
 
Mais bon c'est pas le changement de couleur qui va changer quoi que ce soit (à part la couleur, that is :o).


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-02-2007 à 00:16:43    

Soyons fous !
 

Code :
  1. <table align="center" width="440" cellpadding="0" cellspacing="0">
  2. <tr>
  3. <td>
  4. <?php
  5. mysql_connect("localhost", "bcml", "bcml" ) or die("Impossible de se connecter :  " . mysql_error());
  6. mysql_select_db("bcmlbe" );
  7. $date2 = date('2006-08-10 20:00:00');
  8. $result85 = mysql_query("SELECT DATE_FORMAT(date,'%d-%m à %H:%i') AS date, game, score, cat, cadre, id, comment FROM games WHERE date BETWEEN '".date('2007-02-13 19:00:00')."' AND '".date('2007-02-28 21:00:00')."' ORDER BY games.date ASC" );
  9. while ($row85 = mysql_fetch_array($result85, MYSQL_NUM))
  10. {
  11. ?> 
  12. <?php       
  13. $compteur = 0;     
  14. $array = mysql_fetch_array($result85, MYSQL_NUM);       
  15. foreach ($array as $key => $value){     
  16.   if ($compteur%2 === 0){     
  17.      $couleur = '#4C0099';     
  18.   } else {     
  19.      $couleur = '#ffffff';     
  20.   }       
  21.   echo '<tr style="background-color:', $couleur ,'">';
  22.   $compteur++;   
  23. }     
  24. ?>
  25. <td width="100">
  26.       <p align="center"><font face="Verdana" color="#000000"><span style="font-size: 8pt">
  27.       <?php echo $row85[0]; ?></span></font></p></td>
  28.       <td width="60"><p align="left"><font face="Verdana" style="font-size: 8pt" color="#000000"><?php
  29. if ($row85[4] == 1){
  30. echo 'Champ.';
  31. }
  32. elseif ($row85[4] == 2){
  33. echo 'AWBB';
  34. }
  35. elseif ($row85[4] == 3){
  36. echo 'Amical';
  37. }
  38. elseif ($row85[4] == 4){
  39. echo 'Cpe Pr.';
  40. }
  41. elseif ($row85[4] == 5){
  42. echo '1er tour';
  43. }
  44. elseif ($row85[4] == 6){
  45. echo '2ème tour';
  46. }
  47. elseif ($row85[4] == 7){
  48. echo '3° tour';
  49. }
  50. elseif ($row85[4] == 8){
  51. echo '4° tour';
  52. }
  53. elseif ($row85[4] == 9){
  54. echo 'Coupe Bel.';
  55. }
  56. ?></font></p></td>
  57. </tr>
  58. </table>

Message cité 1 fois
Message édité par oli1987 le 13-02-2007 à 00:17:55
Reply

Marsh Posté le 13-02-2007 à 00:16:43   

Reply

Marsh Posté le 13-02-2007 à 00:52:57    

oli1987 a écrit :


Code :
  1. while ($row85 = mysql_fetch_array($result85, MYSQL_NUM))
  2. {
  3. ?> 
  4. $array = mysql_fetch_array($result85, MYSQL_NUM);



 [:dao] C'est quoi le but de la manœuvre là ?  


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 13-02-2007 à 01:02:33    

le while me sert à afficher les résultats de ma requête en plusieurs lignes.
 
Quant à $array, on m'a donné cela, mais je m'embrouille plus qu'autre chose ...

Reply

Marsh Posté le 13-02-2007 à 01:19:57    

oli1987 a écrit :

le while me sert à afficher les résultats de ma requête en plusieurs lignes.
 
Quant à $array, on m'a donné cela, mais je m'embrouille plus qu'autre chose ...


bah ouais, parce que si vu comment c'est ecris, tu loupe la moitié de tes résultats...
(chaque appel a mysql_fetch_array avance le "curseur" du résultat sur la requête)


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 13-02-2007 à 01:28:14    

rebonsoir,
dis, avec le code suivant, ca a l'air d'être dans le bon. Seul hic, y a que le premier résultat qui s'affiche. Il doit pas manquer grand chose, mais je vois pas quoi ...
 

Code :
  1. <?php
  2. $num_ligne = mysql_num_rows($result85);
  3. while($row = mysql_fetch_row($result85)){
  4. $var = $num_ligne % 2;
  5. if ($var == 0){
  6. $couleur='#a9a9dd';
  7. } else{
  8. $couleur='#ffffff';
  9. }
  10. echo "<tr><td bgcolor=" .$couleur. ">";
  11. }
  12. ?>

Reply

Marsh Posté le 13-02-2007 à 08:46:44    

C'est légèrement (voire complètement) n'importe quoi tout ça quand même, avec le <tr> tout seul dans son pauvre for (dans un <td>, en +) et tout le reste du tableau hors de la boucle...  [:pingouino]  
 
Et puis là tu fais n'importe quoi avec $num_ligne et le modulo 2 parce que tu sais probablement pas du tout ce que tu fais.
 
Bref, conseil : revois les bases. :spamafote:


Message édité par sielfried le 13-02-2007 à 08:47:12

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-02-2007 à 09:52:38    

Code :
  1. <?php
  2. $num_ligne=0;
  3. while($row = mysql_fetch_assoc($result85))
  4. {
  5. $var = $num_ligne % 2;
  6. if ($var == 0){
  7.  $couleur='#a9a9dd';
  8. } else{
  9.  $couleur='#ffffff';
  10. echo "<TR bgcolor=".$couleur.">";
  11. foreach ($row as $key=>$cellule)
  12. {
  13.  echo "<TD ...... >".$cellule."</TD>";
  14. }
  15. echo "</TR>";
  16. $num_ligne ++;
  17. }
  18. ?>


Message édité par Alisteroid le 13-02-2007 à 10:02:09
Reply

Marsh Posté le 13-02-2007 à 10:33:28    

N'empeche que le mieux c'est quand même ça, je trouve :

Code :
  1. $couleurs = array('couleur1', 'couleur2');
  2. $nb = count($couleurs);
  3. $i = 0;
  4. while($resultat = $mysql->fetch_array()) {
  5. echo '<tr class="'.$couleurs[$i%$nb].'">';
  6. echo ' <td>blabla</td>';
  7. echo '</tr>';
  8. $i++;
  9. }


 
On peut spécifier autant de couleur dans $couleurs là.


Message édité par Surfoo le 13-02-2007 à 10:34:01
Reply

Marsh Posté le 13-02-2007 à 10:43:56    

Avec le code suivant, le résultat semble bien plus proche :
 

Code :
  1. <?php
  2. $num_ligne=0;
  3. while($row = mysql_fetch_assoc($result85)){     
  4. $var = $num_ligne % 2;   
  5. if ($var == 0){       
  6. $couleur='#a9a9dd';   
  7. } else{       
  8. $couleur='#ffffff';
  9. foreach ($row as $key=>$cellule){
  10. echo "<TR bgcolor=".$couleur.">";
  11. }
  12. ?> 
  13. <td>...</td>
  14. <td>...</td>
  15. <td>...</td>
  16. <td>...</td>
  17. </tr>
  18. <?php
  19. $num_ligne ++;
  20. }
  21. }
  22. mysql_free_result($result85);
  23. ?>


Mais voici le résultat, seule la première ligne est affichée, et répétée autant de fois qu'il y a de matches :
 
http://www.bcml.be/Images/index.1.jpg
 
Que manque-t-il ?


Message édité par oli1987 le 13-02-2007 à 10:44:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed