Bonjour à tous
J'utilise souvent les fonctions csv de php pour afficher des tableaux en html.
Existe-t-il une fonction php pour combiner plusieurs csv de structure identique et les afficher dans un seul tableau trié ?
Merci pour vos réponses.
<?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<?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 <?php
$fichier = 'CLTP1.csv';
if(file_exists($fichier)) {
echo "<table>";
echo "<colgroup></colgroup><colgroup align=left></colgroup><colgroup align=left></colgroup>";
$fic = fopen($fichier, 'rb');
$nb_lignes=0; //Init du nombre de lignes
$nb_lignes_max=250; //Gestion des lignes dans un tableau
$tab_colonnes=array(0,2,3,4,5,6,8); //Gestion des colonnes dans un tableau
for ($ligne = fgetcsv($fic, 1024, ","); !feof($fic); $ligne = fgetcsv($fic, 1024, ",")) {
if($nb_lignes<$nb_lignes_max){
echo "<tr>";
$j = sizeof($ligne);
for ($i = 0; $i < $j; $i++) {
if(in_array($i,$tab_colonnes)){
echo "<td>".$ligne[$i]."</td>";
}
}
echo "</tr>";
}
$nb_lignes++;
}
echo "</table>\n";
}
else {
echo "Pas encore de résultat saisi... !";
}
?>
while ($ligne = fgetcsv($fic))
je t'ai donnée quasiement tout, il te manque juste la fonction str_getcsv qui va faire la même chose que fgetcsv mais sur une chaine de caractère.Merci Moogli
Je suis novice en PHP et je ne parviens pas à combiner tes lignes de code avec mon script d'affichage.
Ci-dessous, le script que j'utilise :
<?php
echo "<tr>";
$j = sizeof($ligne);
for ($i = 0; $i < $j; $i++) {
if(in_array($i,$tab_colonnes)){
echo "<td>".$ligne[$i]."</td>";
}
}
echo "</tr>";
?>
dans la boucle foreach qui parcourt le tableau.