Bonjour,
Sur mon site, l'utilisateur peut - par le biais d'un questionnaire - formuler une requête Mysqli qui renvoie un tableau du résultat de sa requête. Pas de problème.
Je souhaite qu'il puisse télécharger ce tableau au format CSV. J'ai récupéré un script que j'ai adapté. Le résultat est bien un fichier CSV, mais il contient le code html de la page....
Les dernières lignes de mon fichier php :
Pas de messages d'erreurs. Le fichier CSV affiche (dans MS-EXCEL ou OPEN OFFICE Calc) le code html de la page avec au milieu le tableau (correct) des data mais pas la ligne d'entête des colonnes. Par contre, je n'ai pas pu mettre le fichier CSV en pièce jointe car il s'affiche "Fichier non valide".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 //Debogage // echo $line1; // echo $data; //Download csv file $filename = $GLOBALS['namefile'] . date('Y-m-d_H-i-s') . ".csv"; header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-type: text/x-csv"); header("Content-Disposition: attachment; filename=$filename"); echo $line1."\n".$data."\n";
Dans mon fichier php, echo $line1 et echo $data me renvoient bien les entêtes de colonnes et les données :
Year;Month;plot;NbEspPlant;Fgset; ...
"1996";"8";"69";"1";"F"; ...
"1996";"8";"83";"1";"L"; ...
"1996";"8";"32";"2";"4W"; ...
"1996";"8";"127";"2";"LW"; ...
...
Les entêtes de colonnes sont correctes, mais elles ne sont pas entre double quottes. Le code qui génère $line1 :
J'ai essayé de remplacer la ligne par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 foreach($names as $value) { $line1 .= $value->name.";"; }
$line1 .= $value->'"'.name.'"'.";";
mais sans succès !
Je ne sais pas si il y a un problème ou plusieurs (les doubles quottes, les "header" de mon csv, ou d'autres...)
Un grand merci par avance à ceux qui pourront me sortir de plusieurs jours de recherches infructueuses sur Google et d'essais inefficaces !
Partager