Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2743 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Alterner couleur de lignes d'un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Alterner couleur de lignes d'un tableau

n°1838979
jc66
Posté le 16-01-2009 à 15:05:30  profilanswer
 

Bonjour.
 
Je tente d'insérer ce code pour alterner les couleurs de lignes de mon tableau

Code :
  1. <?php
  2.     function color(){
  3.         static $count = 0;
  4.         $num_args = func_num_args();
  5.         if ($num_args === 0) return;
  6.         $args = func_get_args();
  7.         $color = $args[$count % $num_args];
  8.         ++$count;
  9.         return $color;
  10.     }
  11. ?>
  12. <?php
  13.     $i = 0;
  14.     while(++$i < 10){
  15.         echo '<span style="color: ' . color('blue','red','green') . '>' . $i . '</span><br />';
  16.     }
  17. ?>


 
 
donc je fait
 
 

Code :
  1. <? function color(){
  2.         static $count = 0;
  3.         $num_args = func_num_args();
  4.         if ($num_args === 0) return;
  5.         $args = func_get_args();
  6.         $color = $args[$count % $num_args];
  7.         ++$count;
  8.         return $color;
  9.  }
  10.   // on compte le nombre de news stockées dans la base de données
  11. $nb_news = mysql_num_rows($req);
  12. if ($nb_news == 0) {
  13.     echo 'Aucune news enregistrée.';
  14. }
  15. else {
  16.    // si on a au moins une news, on l'affiche
  17.    $nb_news = 0;
  18.     while ($data = mysql_fetch_array($req)) {
  19.   $i = 0;
  20.     while(++$i < 10){
  21.      
  22.                             
  23.         // on affiche les résultats
  24.       echo '<p id="'.$data['id'].'">';
  25. echo '<span style="color: ' . color('blue','red','green') . '> <h3><a href="index-'.$data['id'].'.php">' .stripslashes(trim($data['titre'])).  '</a></h3>';  ?>
  26.    
  27.        echo '' , nl2br(trim($data['texte_news'])) ; ?>
  28.       <a href="index-<?php echo $id;?>.php">Lire la suite <img src="bouton_fleche.gif" border="0" align="absmiddle" /></a></span>
  29. }
  30. }


 
Mais ca ne fonctionne pas :(


Message édité par jc66 le 16-01-2009 à 15:05:45
mood
Publicité
Posté le 16-01-2009 à 15:05:30  profilanswer
 

n°1838985
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 16-01-2009 à 15:09:45  profilanswer
 

il vaut mieux que tu créés deux classes CSS pour les tr, avec 2 couleurs distinctes
 
et apres, dans ton while, tu fais ça:

Code :
  1. while ( ++$i < 10)
  2. {
  3. $classeTR = (( $i%2 == 0 ) ?  "rouge" : "bleue" );
  4. echo "<tr class=\"".$classeTR."\">";
  5.  
  6. ...............
  7.  
  8. echo "</tr>";
  9. }


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1838986
FlorentG
Unité de Masse
Posté le 16-01-2009 à 15:10:12  profilanswer
 

Qu'est-ce qui ne fonctionne pas. As-tu vérifié le code généré ?

n°1839008
jc66
Posté le 16-01-2009 à 15:38:47  profilanswer
 

Ce qui me pose problème c'est que moi j'ai  
 

Code :
  1. while ($data = mysql_fetch_array($req))


 
 
il faut que je le remplace par  

Code :
  1. while ( ++$i < 10)


 
 
?? (suivant le code de Marty_McFly)
 
Je ne comprend pas


---------------
http://www.mouly-jean-claude.fr
n°1839010
FlorentG
Unité de Masse
Posté le 16-01-2009 à 15:41:53  profilanswer
 

Nan, tu mets ton $i++ quelque part dans le while. La condition inférieure à 10, ça devait être pour l'exemple juste.
 
Essaye d'abord de comprendre ce que tu fais et lis, ça ne sert à rien de recopier bêtement un code

n°1839018
macgawel
Posté le 16-01-2009 à 15:50:20  profilanswer
 

FlorentG a écrit :

Qu'est-ce qui ne fonctionne pas. As-tu vérifié le code généré ?


+1
A vue de nez :
 
1. Le code HTML est un vrai sac de noeuds :
- Tu met un titre h3 dans un Paragraphe.Ca ne se fait pas.
- tu utilises un span qui fait tout le paragraphe. C'est inutile, autant définir les caractèristiques de ton paragraphe...
 
2.  

Code :
  1. echo '<span style="color: ' . color('blue','red','green') . '> <h3><a href="index-'.$data['id'].'.php">' .stripslashes(trim($data['titre'])).  '</a></h3>';

Il manque une apostrophe pour fermer le style du span...

n°1839028
jc66
Posté le 16-01-2009 à 16:02:36  profilanswer
 

J'ai repris mon code en le commentant, voici mon code vierge (pas de code pour alterner les couleurs:
 
j'ai ca:  

Code :
  1. <?php
  2. // je me connecte  ma base  
  3. $base = mysql_connect ('***', '***', '***');
  4.     mysql_select_db('***', $base);
  5. //je lance ma requete
  6. $sql = 'SELECT * FROM news1
  7. ORDER BY date1 desc ' ;
  8. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  9. // je compte le nombre de news stockées dans ma bdd
  10. $nb_news = mysql_num_rows($req);
  11. if ($nb_news == 0) {
  12.     echo 'Aucune news enregistrée.';
  13. }
  14. else {
  15.    // si j'ai un titre je  l'affiche
  16.    $nb_news = 0;
  17.     while ($data = mysql_fetch_array($req)) {
  18. // j'affiche mon titre
  19.        echo '' , nl2br(trim($data['titre'])) ; ?><br>
  20.  
  21.    <?
  22.          }
  23. }
  24. // je fini la requete
  25. mysql_free_result ($req);
  26. ?>


 
 
voici mon code avec la fonction que j'avais mise en premier post (voir tout en haut), je l'inclu dans mon code php pour avoir les couleurs des lignes alternées:
 

Code :
  1. <?php
  2. // je me connecte  ma base  
  3. $base = mysql_connect ('***', '***', '***');
  4.     mysql_select_db('***', $base);
  5. //je lance ma requete
  6. $sql = 'SELECT * FROM news1
  7. ORDER BY date1 desc ' ;
  8. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  9. // je compte le nombre de news stockées dans ma bdd
  10. $nb_news = mysql_num_rows($req);
  11. if ($nb_news == 0) {
  12.     echo 'Aucune news enregistrée.';
  13. }
  14. else {
  15.    // si j'ai un titre je  l'affiche
  16.    $nb_news = 0;
  17.    // le dièse i=0 pour les lignes alternées
  18.      $i = 0;
  19.     while ($data = mysql_fetch_array($req)) {
  20. //le dièse i++ pour les lignes alternées
  21. ++$i
  22. //la fonction
  23.     function color(){
  24.         static $count = 0;
  25.         $num_args = func_num_args();
  26.         if ($num_args === 0) return;
  27.         $args = func_get_args();
  28.         $color = $args[$count % $num_args];
  29.         ++$count;
  30.         return $color;
  31.     }
  32. // j'affiche mon titre
  33.        echo '<span style="color: ' . color('blue','red','green') . '>' , nl2br(trim($data['titre'])), '</span>' ; ?><br>
  34.  
  35.    <?
  36.          }
  37. }
  38. // je fini la requete
  39. mysql_free_result ($req);
  40. ?>


 
 
et j'ai cette erreur:  Parse error: syntax error, unexpected T_FUNCTION in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/bis3/news/test.php on line 30
 
 
 


---------------
http://www.mouly-jean-claude.fr
n°1839031
FlorentG
Unité de Masse
Posté le 16-01-2009 à 16:04:03  profilanswer
 

Nan mais on ne déclare pas de fonction dans un while [:petrus75]

n°1839034
jc66
Posté le 16-01-2009 à 16:06:43  profilanswer
 

FlorentG a écrit :

Nan mais on ne déclare pas de fonction dans un while [:petrus75]


 
j'ai essayé en la mettant tout en haut de la page, mais c'est pareil


---------------
http://www.mouly-jean-claude.fr
n°1839036
FlorentG
Unité de Masse
Posté le 16-01-2009 à 16:07:57  profilanswer
 

Ca ne dois pas être pareil nan. Sérieusement, essaie de faire ça toi-même au lieu de repomper un code ailleurs. Surtout que là on dirait que tu ne connais pas encore la notion de fonction...

mood
Publicité
Posté le 16-01-2009 à 16:07:57  profilanswer
 

n°1839038
jc66
Posté le 16-01-2009 à 16:08:54  profilanswer
 

le code commenté , c'est mon propre code, y a pas de pompage nulle part :)


Message édité par jc66 le 16-01-2009 à 16:09:16

---------------
http://www.mouly-jean-claude.fr
n°1839039
FlorentG
Unité de Masse
Posté le 16-01-2009 à 16:10:44  profilanswer
 

Ouais mais la fonction, c'est toi qui l'a faite ?

n°1839040
jc66
Posté le 16-01-2009 à 16:11:03  profilanswer
 

donc je fait ca:
 

Code :
  1. <?php
  2. // je me connecte  ma base  
  3. $base = mysql_connect ('***', '***', '***');
  4.     mysql_select_db('***', $base);
  5. //je lance ma requete
  6. $sql = 'SELECT * FROM news1
  7. ORDER BY date1 desc ' ;
  8. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  9. // je compte le nombre de news stockées dans ma bdd
  10. $nb_news = mysql_num_rows($req);
  11. //la fonction
  12.     function color(){
  13.         static $count = 0;
  14.         $num_args = func_num_args();
  15.         if ($num_args === 0) return;
  16.         $args = func_get_args();
  17.         $color = $args[$count % $num_args];
  18.         ++$count;
  19.         return $color;
  20.     }
  21. if ($nb_news == 0) {
  22.     echo 'Aucune news enregistrée.';
  23. }
  24. else {
  25.    // si j'ai un titre je  l'affiche
  26.    $nb_news = 0;
  27.    // le dièse i=0 pour les lignes alternées
  28.      $i = 0;
  29.     while ($data = mysql_fetch_array($req)) {
  30. //le dièse i++ pour les lignes alternées
  31. ++$i
  32. // j'affiche mon titre
  33.            echo '<span style="color: ' . color('blue','red','green') . '>' , nl2br(trim($data['titre'])), '</span>' ; ?><br>
  34.  
  35.    <?
  36.          }
  37. }
  38. // je fini la requete
  39. mysql_free_result ($req);
  40. ?>


 
 
 
Parse error: syntax error, unexpected T_ECHO in /home/www/cccf2e7a7c56b5ceef6d1ee2001e19aa/web/bis3/news/test.php on line 45


Message édité par jc66 le 16-01-2009 à 16:12:57

---------------
http://www.mouly-jean-claude.fr
n°1839042
FlorentG
Unité de Masse
Posté le 16-01-2009 à 16:12:34  profilanswer
 

T'as oublié un point-virgule après ton ++$i. L'erreur n'est pas la même, regarde là-ligne indiquée, regarde aussi le type d'erreur (unexpected, ça veut dire qu'il s'attend à autre chose)

n°1839044
jc66
Posté le 16-01-2009 à 16:14:51  profilanswer
 

là j'ai plus d'erreur avec ce code, mais aucune ligne de couleur
 

Code :
  1. <?php
  2. // je me connecte  ma base  
  3. $base = mysql_connect ('***', '***', '***');
  4.     mysql_select_db('***', $base);
  5. //je lance ma requete
  6. $sql = 'SELECT * FROM news1
  7. ORDER BY date1 desc ' ;
  8. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  9. // je compte le nombre de news stockées dans ma bdd
  10. $nb_news = mysql_num_rows($req);
  11. //la fonction
  12.     function color(){
  13.         static $count = 0;
  14.         $num_args = func_num_args();
  15.         if ($num_args === 0) return;
  16.         $args = func_get_args();
  17.         $color = $args[$count % $num_args];
  18.         ++$count;
  19.         return $color;
  20.     }
  21. if ($nb_news == 0) {
  22.     echo 'Aucune news enregistrée.';
  23. }
  24. else {
  25.    // si j'ai un titre je  l'affiche
  26.    $nb_news = 0;
  27.    // le dièse i=0 pour les lignes alternées
  28.      $i = 0;
  29.     while ($data = mysql_fetch_array($req)) {
  30. //le dièse i++ pour les lignes alternées
  31. ++$i;
  32. // j'affiche mon titre
  33.           echo '<span style="color: ' . color('blue','red','green') . '>' , nl2br(trim($data['titre'])), '</span>' ; ?><br>
  34.  
  35.    <?
  36.          }
  37. }
  38. // je fini la requete
  39. mysql_free_result ($req);
  40. ?>


 


---------------
http://www.mouly-jean-claude.fr
n°1839045
FlorentG
Unité de Masse
Posté le 16-01-2009 à 16:15:42  profilanswer
 

Nan mais il faut que tu regardes le code HTML généré, tu devrais voir alors ce qui cloche.

n°1839049
jc66
Posté le 16-01-2009 à 16:19:47  profilanswer
 

je ne sait pas ce qui cloche, j'ai bien les span dans la page:
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>Untitled Document</title>
  6. </head>
  7. <body>
  8. <span style="color: blue>titre1</span><br>
  9.  
  10.    <span style="color: red>titre2</span><br>
  11.  
  12.    <span style="color: green>titre3</span><br>
  13.  
  14.    <span style="color: blue>titre4</span><br>
  15.  
  16. </body>
  17. </html>


---------------
http://www.mouly-jean-claude.fr
n°1839052
FlorentG
Unité de Masse
Posté le 16-01-2009 à 16:20:57  profilanswer
 

Regarde bien, il y a quelque chose qui manque

n°1839057
macgawel
Posté le 16-01-2009 à 16:23:28  profilanswer
 

macgawel a écrit :


+1
A vue de nez :
 
1. Le code HTML est un vrai sac de noeuds :
- Tu met un titre h3 dans un Paragraphe.Ca ne se fait pas.
- tu utilises un span qui fait tout le paragraphe. C'est inutile, autant définir les caractèristiques de ton paragraphe...
 
2.  

Code :
  1. echo '<span style="color: ' . color('blue','red','green') . '> <h3><a href="index-'.$data['id'].'.php">' .stripslashes(trim($data['titre'])).  '</a></h3>';

Il manque une apostrophe pour fermer le style du span...


 :whistle:

n°1839059
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 16-01-2009 à 16:24:13  profilanswer
 

;"
 
je suis pas sur que le <br> soit de l'xhtml 1.0 valid (mais chaque chose en son temps)


Message édité par Marty_McFly le 16-01-2009 à 16:24:54

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1839062
jc66
Posté le 16-01-2009 à 16:26:14  profilanswer
 


 
 
je ne voit pas ou ?????
 
 

Code :
  1. <?php
  2. // je me connecte  ma base  
  3. $base = mysql_connect ('***', '***', '***');
  4.     mysql_select_db('***', $base);
  5. //je lance ma requete
  6. $sql = 'SELECT * FROM news1
  7. ORDER BY date1 desc ' ;
  8. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  9. // je compte le nombre de news stockées dans ma bdd
  10. $nb_news = mysql_num_rows($req);
  11. //la fonction
  12.     function color(){
  13.         static $count = 0;
  14.         $num_args = func_num_args();
  15.         if ($num_args === 0) return;
  16.         $args = func_get_args();
  17.         $color = $args[$count % $num_args];
  18.         ++$count;
  19.         return $color;
  20.     }
  21. if ($nb_news == 0) {
  22.     echo 'Aucune news enregistrée.';
  23. }
  24. else {
  25.    // si j'ai un titre je  l'affiche
  26.    $nb_news = 0;
  27.    // le dièse i=0 pour les lignes alternées
  28.      $i = 0;
  29.     while ($data = mysql_fetch_array($req)) {
  30. //le dièse i++ pour les lignes alternées
  31. ++$i;
  32. // j'affiche mon titre
  33.           echo '<span style="color: ' . color('blue','red','green') . '>' , nl2br(trim($data['titre'])), '</span>' ; ?><br>
  34.  
  35.    <?
  36.          }
  37. }
  38. // je fini la requete
  39. mysql_free_result ($req);
  40. ?>


---------------
http://www.mouly-jean-claude.fr
n°1839063
FlorentG
Unité de Masse
Posté le 16-01-2009 à 16:26:43  profilanswer
 

Un petit effort voyons :/

n°1839066
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 16-01-2009 à 16:29:11  profilanswer
 

indice: c'est pas loin de la ligne 45, environ


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1839068
jc66
Posté le 16-01-2009 à 16:30:20  profilanswer
 

" ?
 
c bon, ca marche.   Merci à tous.  ;)


---------------
http://www.mouly-jean-claude.fr
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Alterner couleur de lignes d'un tableau

 

Sujets relatifs
Problème tableau phpSuppression de valeurs dans un tableau multidimensionnel
Tri d'un tableauCouleur défaut page HTML
Changer plusieurs images simultanément dans un tableauPasser d'un tableau html à un tableau css?
Afficher les lignes ne contenant pas de chiffresaide tableau de chaines et allocation dynamique !?
JLabel sur plusieurs lignesAlterner la couleur des lignes d'un tableau ?
Plus de sujets relatifs à : Alterner couleur de lignes d'un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR