Tableau PHP en couleur

Signaler
Messages postés
13
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 août 2005
-
Messages postés
36
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
11 mai 2009
-
bonjour,

j'utilise ce code pour ouvrir un fichier au format csv et l'integrer dans un tableau, ca marche super :

Ma question est la suivante, dans ce beau tableau cree avec ce code, je voudrai changer les couleurs des cellules en fonction des valeurs
ex : if le nombre dans la cellule est <100, met la cellule en rouge
if le nombre est entre 100 et 200 met la cellule en vert

Merci beaucoup

<?
# le separateur
$separator=";";

# le ou les fichiers a scanner
$csvfile[0]="\\\\d:\\bdd\\prod.txt";

# le code html pour afficher :
$table_in="\";
$table_out="
";
$row_in="<tr>";
$row_out="</tr>";
$field_in="<td bgcolor=#000000><nobr>";
$field_out="&nbsp;</td>";

# Combien de fichiers a scanner ?
$nb=count($csvfile);
$i=0;

while($i<$nb)
{
# a activer si heberge par php4
error_reporting(1);
$row=0;
# ouvre le fichier csv en lecture
$fpread=@fopen($csvfile[$i], "r") or die;
echo $table_in;
while ($buffer=fgetcsv($fpread, 65535, $separator))
{
# combien de champs ?
$num = count($buffer);
echo $row_in;
$row++;
for ( $c=0; $c<11; $c++ ) print
$field_in.$buffer[$c].$field_out;
echo $row_out;
}
echo $table_out;
$i++;
}
?>

8 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
hello,



tout d'abord, on utilise plutot des CSS pour la mise en page.

<td style="background-color:#ff0000">

et de prefence externe, la css.

...

td.field_in_red {

background-color:#ff0000;

}

td.field_in_green {


background-color:#00ff00;


}

...

Ensuite :

...

$field_in_red='<td class="field_in_red"><nobr>';


$field_in_green='<td
class="field_in_green"
><nobr>';

...


Il y a quoi dans ton fichier csv ? Si ce sont juste ces valeurs, il suffit que tu les testes ?

if ($buffer[$c]<100)

echo $field_in_red.$buffer[$c].$field_out;

if (100<$buffer[$c]<200)

echo $field_in_green.$buffer[$c].$field_out
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ps : font est deprecie, aussi...mets tout ca dans tes css.

http://www.w3schools.com/css/css_reference.asp
Messages postés
13
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 août 2005

Je te remercie de ton aide.
J'ai fait la CSS et dans mon code j'ai mis :

if ($buffer[$c]<5000)
$field_in_red.$buffer[$c].$field_out;

Si j'enleve les ligne avec if, ca marche, mes cellules sont rouges par exemple , mais si je remet le IF, j'ai ce message : Parse error: syntax error, unexpected T_IF in D:\IntranetCLX\test_csv_2.php on line 139

Apparement le IF lui plait pas, donc si tu as une petite idée sympa (il n'y a que des chiffres dans mes donness csv... ex : 12315;2452;9635;12354;418632;)

merci

Bye
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Si t'as fait un copier_coller de mon code, c'est normal, j'ai oublie le point-virgule apres le dernier echo



De toutes facons, c'est juste une erreur de syntaxe la, il manque un
truc quelquepart : un poin-virgule, une accolade, etc etc...mets, si tu
veux, ici, ton code, entre les lignes...136 et 143 disons.
Messages postés
13
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 août 2005

Voici un bout du code...super pour ton aide si rapide :-)))

127 # ouvre le fichier csv en lecture
128 [mailto:$fpread=@fopen($csvfile[$i $fpread=@fopen($csvfile[$i]], "r") or die;
129 echo $table_in;
130 while ($buffer=fgetcsv($fpread, 65535, $separator))
131 {
132 # combien de champs ?
133 $num = count($buffer);
134 echo $row_in;
135 $row++;
136 for ( $c=0; $c<11; $c++ ) print
137 # $field_in.$buffer[$c].$field_out;
138
139 if ($buffer[$c]<5000)
140 $field_in_red.$buffer[$c].$field_out;
141 if (5000<$buffer[$c]<20000)
142 $field_in_green.$buffer[$c].$field_out;
143 echo $row_out;
144 }
145 echo $table_out;
146 $i++;
147 }
?>
Messages postés
13
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 août 2005

si je met les "echo" devant $field_in_red... j'ai aussi le meme type de messages d'erreur mais avec echo...
pour info....bye
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Je ne pige pas ton code la lol.

La ligne 142 devrait etre un commentaire non ?

Il y a aussi une accolade fermante en trop la mais elle vient peut-etre de plus haut.

Pour simplifier : mets des accolades pour tous tes if(), for() etc...meme s'ils ne font qu'une ligne, on y verra plus clair.

Y a un print tout seul ligne 136 aussi, sans quotes, et suivi d'une ligne commentee.
Messages postés
36
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
11 mai 2009

si j'ai bien compris votre question c'est que vous voulez colorer les cases d'un tableau selon un critere(un if)

si c'est bien ce que vous voulez il vous suffit de faire:

if(critere){

<TD BGCOLOR="#FF0000">

//le #FF0000 est le rouge

//et vous ecrivez ce que vous voulez dans votre
cellule, et vous pouvez meme changer //le font de votre ecriture en
faisant :

contenu

}j'espere que c'est bien ce que vous cherchez