Csv to tableau php

badreddineghazouani Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   -
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);
}


?>
A voir également:

1 réponse

jeremy.s Messages postés 1226 Date d'inscription   Statut Membre Dernière intervention   79
 
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 !




0