Csv to tableau php

Fermé
badreddineghazouani Messages postés 5 Date d'inscription dimanche 30 juin 2013 Statut Membre Dernière intervention 5 juillet 2013 - Modifié par badreddineghazouani le 5/07/2013 à 13:04
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 5 juil. 2013 à 14:16
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 lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 79
5 juil. 2013 à 14:16
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