par
moogli » 15 sept. 2011, 14:03
salut,
an natif non.
Après avec des structures identiques on peu imaginer un code simple.
la fonction
file te permet d'avoir un tableau avec une ligne du fichier par "case" du tableau.
s'il y a une ligne "d’entête" il faut la virer sauf pour le premier fichier. et tu utilise
array_merge pour n'avoir qu'un seul tableau avec le contenu de tout les fichiers que tu peux afficher a la fin.
exemple
<?php
$tableaufichier = array ('fichier1.csv','fichier2.csv'); // c'est pour l'exemple ça peut tres bien être le retour d'un formulaire d'upload par exemple
$tableaucsv = array();
foreach ($tableaufichier as $fichiercsv) {
// on met le contenu du fichier dans une variable temporaire
$tmp = file($fichiercsv);
// on vérifie si le tableaucsv est vide car s'il ne l'est pas on vire la 1ere ligne (en considérant qu'il y a TOUJOURS une ligne d'entête,
// sinon ben faut virer le test XD
if (!empty($tableaucsv)) {
unset ($tmp[0]);
}
$tableaucsv = array_merge($tableaucsv,$tmp)
}
// affichage final
foreach ($tableaucsv as $csv) {
// ton traitement habituel
}
?>
bon a près on peu imagine plein de truc, par exemple utiliser un tableau de tableau pour mettre le nom du fichier pour séparer les donnée histoire d'en connaitre la source
genre $tableaucsv[] = array('nomfichier'=>$fichiercsv, 'data' => $tmp);
dans ce cas l'affichage aura un double foreach
<?php
foreach ($tableaucsv as $file) {
echo 'fichier : '.$file['nomfichier'].'<br />';
foreach ($file['data'] as $csv) {
//traitement habituel
}
}
?>
tu peux aussi construire une classe autour de cela pour "masquer" la "tonne" de code
@+