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

  FORUM HardWare.fr
  Programmation
  PHP

  couleur tableau fct result valeur colonne csv

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

couleur tableau fct result valeur colonne csv

n°2172518
cyberm
Posté le 24-01-2013 à 17:40:50  profilanswer
 

Bonjour,
 
Débutant avec PHP, j'aurais besoin de votre aide.
 
Existant :
- 1 fichier csv composé comme suit:
 
entete1;entete2;entete3;entete4;
valeur1;valeur11;valeur111;valeur1111;
valeur2;valeur22;valeur222;valeur2222;
valeur3;valeur33;valeur333;valeur3333;
valeur ......
 
J'affiche le tableau extrait du csv dans une page PHP avec balise de mise en forme (tableau html)
 
Par contre, je souhaiterais afficher toutes les valeurs "entete4" avec de la couleur.
si valeur1111 = "0" dans le csv then cellule du tableau dans page PHP = "green"
si valeur1111 = "1" dans le csv then cellule du tableau dans page PHP = "red"
 
si valeur2222 = "0" dans le csv then cellule du tableau dans page PHP = "green"
si valeur2222 = "1" dans le csv then cellule du tableau dans page PHP = "red"
 
 
Pourriez-vous m'aider ?
 
merci d'avance.
 
Voici mon code :
 
<?php
$vCSVdelimiter = ';'; $vCSVenclosure = '"'; $vCSVescape = '\\'; // paramètres CSV
$CheminDuCsv = '../csv/20130123-Sites.csv';  
 
if ( !( ($vFichier = file_get_contents( $CheminDuCsv )) === FALSE ) ) {
$vFichier = str_replace( chr(13).chr(10) , chr(13) , $vFichier ); // remplace crlf par cr
$vFichier = str_replace( chr(10) , ' ' , $vFichier ); // remplace lf par un blanc ; (lf (0A) est utilisé par Excel pour les changements de lignes de texte à l'intérieur d'une cellule)
     $lines = explode( chr(13) , $vFichier ); // converti la chaîne qui est dans $vFichier en tableau associatif ($lines)
     if ( ! ( (strpos( $lines[0], $vCSVdelimiter)) === FALSE ) ) {
$vNbCol = substr_count( $lines[0], $vCSVdelimiter ) + 1 ; // nb colonnes de la première ligne
          $vNoLigFicDon = 0 ; // init compteur numéro de ligne du fichier de données
$tDonnesLues = array();
          foreach ($lines as $line) {
                if ( ! ( strpos( $line, $vCSVdelimiter) === FALSE ) ) {
                     $tCsvDatas = str_getcsv( $line, $vCSVdelimiter, $vCSVenclosure, $vCSVescape) ;
                     $vNoLigFicDon++;
                     for ( $vNoColFicDon=1 ;$vNoColFicDon <= $vNbCol ; $vNoColFicDon++ ) {
                          if ( isset( $tCsvDatas[$vNoColFicDon-1] ) ) {
                               $vDonnee = preg_replace("( +)",' ',trim( $tCsvDatas[$vNoColFicDon-1] ) ) ; // avec suppr des blancs devant, derrière, et redondants
                          } else {
                               $vDonnee = '';
                          }
                          $tDonnesLues[$vNoLigFicDon][$vNoColFicDon] = $vDonnee ;
                     }
                }
          }
     }
}
echo '<table width=150% BORDER="1">';
for ( $vNoLigne=1 ;$vNoLigne <= $vNoLigFicDon ; $vNoLigne++ ) {
echo '<tr>';
 for ( $vNoColFicDon=1 ;$vNoColFicDon <= $vNbCol ; $vNoColFicDon++ ) {
  echo '<td>';
      print count($vNoLigFicDon) == 0 ? "not ok\n" : '<font color="blue"><b>';  
     // print count($vDonnee) == 1 ? "ok\n" : "not ok\n";
     //if ( $vNoColFicDon == 4 )  echo '<font color="green"><b>';
     if ( $vNoLigne == 1 ) echo '<font color="blue"><b>';
   echo ''.Htmlentities( $tDonnesLues[$vNoLigne][$vNoColFicDon] ,ENT_QUOTES,'ISO-8859-15').'</td>';
   }
echo '</tr>';
  }
echo '</table>';
?>
 
 
 

mood
Publicité
Posté le 24-01-2013 à 17:40:50  profilanswer
 

n°2172519
cyberm
Posté le 24-01-2013 à 17:48:14  profilanswer
 

je vous est induit en erreur (tests en cours)....désolé.
voici la bonne fin du script :
echo '<table width=150% BORDER="1">';
for ( $vNoLigne=1 ;$vNoLigne <= $vNoLigFicDon ; $vNoLigne++ ) {
echo '<tr>';
 for ( $vNoColFicDon=1 ;$vNoColFicDon <= $vNbCol ; $vNoColFicDon++ ) {
  echo '<td>';  
     if ( $vNoColFicDon == 4 )  echo '<font color="green"><b>';
     if ( $vNoLigne == 1 ) echo '<font color="blue"><b>';
   echo ''.Htmlentities( $tDonnesLues[$vNoLigne][$vNoColFicDon] ,ENT_QUOTES,'ISO-8859-15').'</td>';
   }
echo '</tr>';
  }
echo '</table>';

n°2172565
cyberm
Posté le 25-01-2013 à 00:04:22  profilanswer
 

personne pour m'aider un peu ? ....:-)

n°2172578
gelatine_v​elue
Posté le 25-01-2013 à 10:02:33  profilanswer
 

1- le code est illisible, il faut au moins le mettre dans des balises [code]
2- Tu mélanges le code Php et la page html. C'est mal, il faut séparer le traitement de l'affichage.
3- Tu fais ton code dans un énorme pâté de code indigeste, il faut séparer des fonctions
4- Tu colorises le texte avec une balise dépréciée depuis pas mal d'années. Il faut séparer la mise en forme de la sémantique, et utiliser du Css.  
 
A ta place je commencerais par ça, ça m'étonnerait pas que ton problème se résolve de lui même.

n°2172580
cyberm
Posté le 25-01-2013 à 10:15:05  profilanswer
 

bonjour,
 
Merci pour vos encouragement .... snif !  
bon je l'admet, je ne suis pas un dieu en programmation php, je débute....
Merci pour votre indulgence.
 
je vous renvoie le code avec les balises :

Code :
  1. <?php
  2. $vCSVdelimiter = ';'; $vCSVenclosure = '"'; $vCSVescape = '\\'; // paramètres CSV
  3. $CheminDuCsv = '../csv/20130123-Sites.csv';
  4. if ( !( ($vFichier = file_get_contents( $CheminDuCsv )) === FALSE ) ) {
  5. $vFichier = str_replace( chr(13).chr(10) , chr(13) , $vFichier ); // remplace crlf par cr
  6. $vFichier = str_replace( chr(10) , ' ' , $vFichier ); // remplace lf par un blanc ; (lf (0A) est utilisé par Excel pour les changements de lignes de texte à l'intérieur d'une cellule)
  7.      $lines = explode( chr(13) , $vFichier ); // converti la chaîne qui est dans $vFichier en tableau associatif ($lines)
  8.      if ( ! ( (strpos( $lines[0], $vCSVdelimiter)) === FALSE ) ) {
  9. $vNbCol = substr_count( $lines[0], $vCSVdelimiter ) + 1 ; // nb colonnes de la première ligne
  10.           $vNoLigFicDon = 0 ; // init compteur numéro de ligne du fichier de données
  11. $tDonnesLues = array();
  12.           foreach ($lines as $line) {
  13.                 if ( ! ( strpos( $line, $vCSVdelimiter) === FALSE ) ) {
  14.                      $tCsvDatas = str_getcsv( $line, $vCSVdelimiter, $vCSVenclosure, $vCSVescape) ;
  15.                      $vNoLigFicDon++;
  16.                      for ( $vNoColFicDon=1 ;$vNoColFicDon <= $vNbCol ; $vNoColFicDon++ ) {
  17.                           if ( isset( $tCsvDatas[$vNoColFicDon-1] ) ) {
  18.                                $vDonnee = preg_replace("( +)",' ',trim( $tCsvDatas[$vNoColFicDon-1] ) ) ; // avec suppr des blancs devant, derrière, et redondants
  19.                           } else {
  20.                                $vDonnee = '';
  21.                           }
  22.                           $tDonnesLues[$vNoLigFicDon][$vNoColFicDon] = $vDonnee ;
  23.                      }
  24.                 }
  25.           }
  26.      }
  27. }
  28. echo '<table width=150% BORDER="1">';
  29. for ( $vNoLigne=1 ;$vNoLigne <= $vNoLigFicDon ; $vNoLigne++ ) {
  30. echo '<tr>';
  31. for ( $vNoColFicDon=1 ;$vNoColFicDon <= $vNbCol ; $vNoColFicDon++ ) {
  32.  echo '<td>';
  33.     if ( $vNoColFicDon == 4 )  echo '<font color="green"><b>';
  34.     if ( $vNoLigne == 1 ) echo '<font color="blue"><b>';
  35.   echo ''.Htmlentities( $tDonnesLues[$vNoLigne][$vNoColFicDon] ,ENT_QUOTES,'ISO-8859-15').'</td>';
  36.   }
  37. echo '</tr>';
  38.  }
  39. echo '</table>';
  40. ?>


 
Peut-être est-ce mieux...
 
Par contre je suis preneur d'un code plus à jour, si vous avez deux minutes...
Encore une fois, désolé si je ne suis pas un "pro" comme vous ... mais j'espère à le devenir... c'est super motivant...
Merci pour votre aide.

n°2172581
gelatine_v​elue
Posté le 25-01-2013 à 10:29:17  profilanswer
 

Dsl si j'ai semblé te prendre de haut, je ne connaissais pas ton niveau.
D'après ce que je comprends, il faut remplacer

 
Code :
  1. if ( $vNoColFicDon == 4 )  echo '<font color="green"><b>';
  2.     if ( $vNoLigne == 1 ) echo '<font color="blue"><b>';
  3. echo ''.Htmlentities( $tDonnesLues[$vNoLigne][$vNoColFicDon] ,ENT_QUOTES,'ISO-8859-15').'</td>';
 

par

 


Code :
  1. $valeur = Htmlentities( $tDonnesLues[$vNoLigne][$vNoColFicDon] ,ENT_QUOTES,'ISO-8859-15'); //Valeur à afficher
  2. $color = "black"; //Couleur noire par defaut
  3. if ( $vNoColFicDon == 4 )  //On est dans la quatrième colonne
  4. {
  5.   $color = "red";
  6.   // La couleur sera rouge par defaut dans la colonne 4, sauf si la valeur est "0"
  7.   if ($value == "0" )
  8.   {
  9.     $color = "green";
  10.   }
  11. }
  12. //Arrive ici on sait quelle couleur utiliser
  13. echo '<span style="color:'.$color.'; font-weight:bold">'.$valeur."</span>";
  14. echo "</td>";
 

J'ai pas testé donc il y a sans doute quelques erreurs de syntaxe à corriger, mais ça doit pas être loin.


Message édité par gelatine_velue le 25-01-2013 à 10:30:39
n°2172582
cyberm
Posté le 25-01-2013 à 10:48:21  profilanswer
 

Merci Gelatine_velue,
Bon, maintenant que mon niveau est découvert ...  :sol:  :sol:  :sol:  
Sinon, pas de soucis, je peux comprendre... pas facile avec ces débutants qui s'improvise "super bon" !  
 
Voilà j'ai copier le code pour voir ce que cela donne, mais il me retourne :
"Notice: Undefined variable: value "
 
J'ai remplacer les guillemets par des ' ' mais toujours pareil...

n°2172583
cyberm
Posté le 25-01-2013 à 10:52:03  profilanswer
 

il fallait "simpelment" mettre $valeur ....
 
Super pour votre aide....
 
Je vais voir si je peux maintenant ajouter une image de style "Alerte" derrière ma derniere colonne ou simplement remplacer le 0 ou le 1 par cette image...
 
Un grand merci .... vous avez trouvé en 2 minutes ce que j'ai chercher en plus de 8h00 sans trouver... Merci merci merci !

n°2172587
gelatine_v​elue
Posté le 25-01-2013 à 11:04:55  profilanswer
 

De rien, avec plaisir.

n°2172612
cyberm
Posté le 25-01-2013 à 14:14:37  profilanswer
 

bonne journée :-)

mood
Publicité
Posté le 25-01-2013 à 14:14:37  profilanswer
 

n°2172616
tsoko
Posté le 25-01-2013 à 14:38:30  profilanswer
 

Bonjour,

Code :
  1. vous avez trouvé en 2 minutes ce que j'ai chercher en plus de 8h00 sans trouver... Merci merci merci !


Et bien comme quoi, le forum est incontournable


---------------
Besoin d'aide pour votre projet? agence web
n°2172630
cyberm
Posté le 25-01-2013 à 15:10:08  profilanswer
 

Oui c'est obligé quant on est mauvais comme moi ;-)
 
Et je crois que je vais pas tarder à reposter ...  
 
pb pour afficher des champs supplémentaires à côté avec des images "red.jpg" et green.jpg"... correspondant aux colonne justement traiter avec vous auparavent !
 
pffff ....ah le code ... un vrai métier  ! et surtout respect aux personnes qui maitrisent !

n°2172649
cyberm
Posté le 25-01-2013 à 18:53:12  profilanswer
 

Je partage, si cela peut servir à qq ... :-)
 

Code :
  1. <?php
  2. $vCSVdelimiter = ';'; $vCSVenclosure = '"'; $vCSVescape = '\\'; // paramètres CSV
  3. $CheminDuCsv = '../csv/nom_fichier.csv';
  4. $imagecolor1 = 'green.jpg';
  5. if ( !( ($vFichier = file_get_contents( $CheminDuCsv )) === FALSE ) ) {
  6. $vFichier = str_replace( chr(13).chr(10) , chr(13) , $vFichier ); // remplace crlf par cr
  7. $vFichier = str_replace( chr(10) , ' ' , $vFichier ); // remplace lf par un blanc ; (lf (0A) est utilisé par Excel pour les changements de lignes de texte à l'intérieur d'une cellule)
  8.      $lines = explode( chr(13) , $vFichier ); // converti la chaîne qui est dans $vFichier en tableau associatif ($lines)
  9.      if ( ! ( (strpos( $lines[0], $vCSVdelimiter)) === FALSE ) ) {
  10. $vNbCol = substr_count( $lines[0], $vCSVdelimiter ) + 1 ; // nb colonnes de la première ligne
  11.           $vNoLigFicDon = 0 ; // init compteur numéro de ligne du fichier de données
  12. $tDonnesLues = array();
  13.           foreach ($lines as $line) {
  14.                 if ( ! ( strpos( $line, $vCSVdelimiter) === FALSE ) ) {
  15.                      $tCsvDatas = str_getcsv( $line, $vCSVdelimiter, $vCSVenclosure, $vCSVescape) ;
  16.                      $vNoLigFicDon++;
  17.                      for ( $vNoColFicDon=1 ;$vNoColFicDon <= $vNbCol ; $vNoColFicDon++ ) {
  18.                           if ( isset( $tCsvDatas[$vNoColFicDon-1] ) ) {
  19.                                $vDonnee = preg_replace("( +)",' ',trim( $tCsvDatas[$vNoColFicDon-1] ) ) ; // avec suppr des blancs devant, derrière, et redondants
  20.                           } else {
  21.                                $vDonnee = '';
  22.                           }
  23.                           $tDonnesLues[$vNoLigFicDon][$vNoColFicDon] = $vDonnee ;
  24.                      }
  25.                 }
  26.           }
  27.      }
  28. }
  29. echo '<table width=150% BORDER="1">';
  30. for ( $vNoLigne=1 ;$vNoLigne <= $vNoLigFicDon ; $vNoLigne++ ) {
  31. echo '<tr>';
  32. for ( $vNoColFicDon=1 ;$vNoColFicDon <= $vNbCol ; $vNoColFicDon++ ) {
  33.  echo '<td>';
  34. $valeur = Htmlentities( $tDonnesLues[$vNoLigne][$vNoColFicDon] ,ENT_QUOTES,'ISO-8859-15'); //Valeur à afficher
  35. $color = "grey"; //Couleur grise par defaut
  36. if ( $vNoColFicDon == 4 )  //On est dans la quatrième colonne
  37.   {
  38.    $color = '#e9fbbf'; // La couleur sera celle du fond du tableau par defaut dans la colonne 4, sauf si la valeur est "0"
  39.     if ($valeur == 0 & $valeur <> 'ETAT')  {
  40.            $color = '#e9fbbf'; //permet de cacher la valeur retournée
  41.        echo '<img src="../images/Button_Red.png" '.$valeur.' </img>' ; //affiche une image à la place
  42.      }
  43.     if ($valeur == 1 & $valeur <> 'ETAT')  {
  44.         $color = '#e9fbbf'; //permet de cacher la valeur retournée
  45.     echo '<img src= "../images/GREEN_Button.png" '.$valeur.'</img>' ;} //affiche une image à la place
  46. }
  47. //Arrivé ici on sait quelle couleur utiliser
  48. echo '<span style="color:'.$color.'; font-weight:bold">'.$valeur. "</span>";
  49. echo "</td>";
  50. }
  51. }   
  52. echo '</tr>';
  53. echo '</table>';
  54. ?>


 
Cordialement
ps: je ne sais pas si je peux, mais si vous avez 2 minutes, voici mon site photos.
(permet de se changer les idées, puis petit site non commercial !)
http://www.fx-photos.com


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

  couleur tableau fct result valeur colonne csv

 

Sujets relatifs
Aide VBA, Somme de chaque ligne d'un tableauProgramme colonne
[C#] Obtenir la couleur rouge d'un pixel [Résolu]tableau 2D dynamique
Tableau :/Comment initialiser un tableau 2 dimensions de manière dynamique ?
Opérations sur les valeurs d'un tableauun algo qui supp le min et le max d'1 tableau à la fois SVP
[c][Transfer de donnees d´un tableau bidimensionel vers unidimensione][c][Lire et ecrire dans un tableau de caracteres en dimension 2]
Plus de sujets relatifs à : couleur tableau fct result valeur colonne csv


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