Csv to tableau php
badreddineghazouani
Messages postés
8
Statut
Membre
-
jeremy.s Messages postés 1248 Statut Membre -
jeremy.s Messages postés 1248 Statut Membre -
Bonjour,
Je cherche à manipuler le contenu d'un fichier csv dans un tableau.
J'utilise pour cela la fonciton fgetcsv(fichier, taille, separateur) qui me
renvoie tout le fichier ligne par ligne (avec un while).
Je voudrais pouvoir manipuler ce tableau par ligne et par colonnes. J'arrive
facilement à vider une colonne, mais comment faire pour isloer tout les cellule vide ? simplement mon tableau contient 5 colone commen fait pour affiche que 3
?.;.;.;voila le code source qui j'utulise pour manipuler le contenu du fichier dans un tableau:
aidez -moi stp.,,
<?php
$row = 2;
if (($handle = fopen("fichier.csv", "r")) !== FALSE) {
echo '<center> <table border="2" bgcolor="#FFCCCC" width="75%"><CAPTION ALIGN=TOP><h2>csv to table</CAPTION> ';
$data = fgetcsv($handle, 1000, ",");
echo '<tr>';
for ($c=0; $c < 5; $c++) {
$value = $data[$c];
echo '<th>'.$value.'</th>';
}
echo'</tr>';
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
/*
if ($row == 1) {
echo '<thead align="center" style="font-family:monaco; color:blue"><tr>';
}else{
echo '<tr>';
}*/
for ($c=0; $c < $num; $c++) {
$data[3]=null;
$data[1]=null;
//echo $data[$c] . "<br />\n";
if(empty($data[$c])) {
$value = " ";
}else{
$value = $data[$c];
}
if ($row == 1) {
echo '<th>'.$value.'</th>';
}else{
echo '<td>'.$value.'</td>';
}
}
if ($row == 1) {
echo '</tr></thead><tbody>';
}else{
echo '</tr>';
}
$row++;
}
echo '</tbody></table></center>';
fclose($handle);
}
?>
Je cherche à manipuler le contenu d'un fichier csv dans un tableau.
J'utilise pour cela la fonciton fgetcsv(fichier, taille, separateur) qui me
renvoie tout le fichier ligne par ligne (avec un while).
Je voudrais pouvoir manipuler ce tableau par ligne et par colonnes. J'arrive
facilement à vider une colonne, mais comment faire pour isloer tout les cellule vide ? simplement mon tableau contient 5 colone commen fait pour affiche que 3
?.;.;.;voila le code source qui j'utulise pour manipuler le contenu du fichier dans un tableau:
aidez -moi stp.,,
<?php
$row = 2;
if (($handle = fopen("fichier.csv", "r")) !== FALSE) {
echo '<center> <table border="2" bgcolor="#FFCCCC" width="75%"><CAPTION ALIGN=TOP><h2>csv to table</CAPTION> ';
$data = fgetcsv($handle, 1000, ",");
echo '<tr>';
for ($c=0; $c < 5; $c++) {
$value = $data[$c];
echo '<th>'.$value.'</th>';
}
echo'</tr>';
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
/*
if ($row == 1) {
echo '<thead align="center" style="font-family:monaco; color:blue"><tr>';
}else{
echo '<tr>';
}*/
for ($c=0; $c < $num; $c++) {
$data[3]=null;
$data[1]=null;
//echo $data[$c] . "<br />\n";
if(empty($data[$c])) {
$value = " ";
}else{
$value = $data[$c];
}
if ($row == 1) {
echo '<th>'.$value.'</th>';
}else{
echo '<td>'.$value.'</td>';
}
}
if ($row == 1) {
echo '</tr></thead><tbody>';
}else{
echo '</tr>';
}
$row++;
}
echo '</tbody></table></center>';
fclose($handle);
}
?>
A voir également:
- Csv to tableau php
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Qwerty to azerty - Guide
- Tableau croisé dynamique - Guide
1 réponse
Salut !
A priro ta logique n'est pas très bonne :
$num = count($data); te renvera toujours le même nombre, car même si ta cellule est vide ca compte pour 1.
Si t'as un fichier comme ca :
nom;prenom;age
jean;dupond;20
lucie;;25
albert;smith;
Dans tout tes tours de boucles tu auras 3 cellules
Pour parcourir ce fichier :
$file = fopen("fichier.csv", "r");
<table>
<thead>
<tr>
$titre = fgetcsv($handle, 1000, ",");
foreach($titre as $t) {
echo '<th>'.$t.'</th>';
}
</tr>
</thead>
<tbody>
$i = 0;
while($ligne = fgetcsv($handle, 1000, ",")) {
echo '<th>';
foreach($ligne as $c) {
echo '<th>'.$c.'</th>';
}
echo '</th>';
$i++
}
</tbody>
</table>
Donc $i correspond à la ligne numéro x
Dans le foreach, $c correspond à une cellule, mais tu n'es pas obligé de faire le foreach, si tu veux faire des test sur une cellule d'une ligne tu y as accès avec $ligne[x] où x est entre 0 et count($ligne)
Avec ca tu peux alors agir au niveau que tu souhaites, lignes ou colonnes !
A priro ta logique n'est pas très bonne :
$num = count($data); te renvera toujours le même nombre, car même si ta cellule est vide ca compte pour 1.
Si t'as un fichier comme ca :
nom;prenom;age
jean;dupond;20
lucie;;25
albert;smith;
Dans tout tes tours de boucles tu auras 3 cellules
Pour parcourir ce fichier :
$file = fopen("fichier.csv", "r");
<table>
<thead>
<tr>
$titre = fgetcsv($handle, 1000, ",");
foreach($titre as $t) {
echo '<th>'.$t.'</th>';
}
</tr>
</thead>
<tbody>
$i = 0;
while($ligne = fgetcsv($handle, 1000, ",")) {
echo '<th>';
foreach($ligne as $c) {
echo '<th>'.$c.'</th>';
}
echo '</th>';
$i++
}
</tbody>
</table>
Donc $i correspond à la ligne numéro x
Dans le foreach, $c correspond à une cellule, mais tu n'es pas obligé de faire le foreach, si tu veux faire des test sur une cellule d'une ligne tu y as accès avec $ligne[x] où x est entre 0 et count($ligne)
Avec ca tu peux alors agir au niveau que tu souhaites, lignes ou colonnes !