Impossible d'exporter un fichier csv suite à une erreur
tsissam
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
blackduck Messages postés 902 Statut Membre -
blackduck Messages postés 902 Statut Membre -
bonjour, je suis entrain de développer une application qui permet d'exporter les fichiers excel .csv à partir de ma base mysql mais j'ai codé mon application et ça me donne cette erreur: Warning: trim() expects parameter 1 to be string, array given in D:\wamp\www\serge\cote-na-tshombo\fonctions\generate.php on line 57.
// nous parcourons $Row et on ajoute chaque valeur à la ligne
foreach ($Row as $clef=>$valeur)
$outputCsv .=trim($valeur).';'; c'est ici ma ligne 57
si quelqu'un a une idée peut m'aider svp
voici mon ma fonction
function fx_download_file_csv($id_promotion,$fileName){
global $cnx;
// la variable qui va contenir les donnees csv
$outputCsv='';
//// requete sql
$etu=$cnx->query("select * from etudiant join promotion on etudiant.id_promo=promotion.id_promo where etudiant.id_promo='$id_promotion'");
$resultEtu=$etu->fetchAll(PDO::FETCH_ASSOC);
if (count($resultEtu)>0) {
$i=0;
while ($Row=$resultEtu)
{
$i++;
//si c'est la première boucle nous affichons les noms des champs afin d'avoir les titres des colonnes
if ($i==1)
{
foreach ($Row as $clef=>$valeur)
$outputCsv .=trim($clef).';';
/// suppression du ; qui traine à la fin
$outputCsv= rtrim($outputCsv, ';');
/// saut de ligne
$outputCsv .="\n";
}
// nous parcourons $Row et on ajoute chaque valeur à la ligne
foreach ($Row as $clef=>$valeur)
$outputCsv .=trim($valeur).';'; c'est ici ma ligne 57
/// suppression du ; qui traine à la fin
$outputCsv= rtrim($outputCsv, ';');
/// saut de ligne
$outputCsv .="\n";
}
}
else
{
exit('Aucune donnée à enregistrer');
}
// Entêtes (headers) PHP qui vont bien pour la création d'un fichier Excel CSV
header("Content-disposition: attachment; filename=".$fileName);
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: application/vnd.ms-excel\n");
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
echo $outputCsv;
exit();
}
// nous parcourons $Row et on ajoute chaque valeur à la ligne
foreach ($Row as $clef=>$valeur)
$outputCsv .=trim($valeur).';'; c'est ici ma ligne 57
si quelqu'un a une idée peut m'aider svp
voici mon ma fonction
function fx_download_file_csv($id_promotion,$fileName){
global $cnx;
// la variable qui va contenir les donnees csv
$outputCsv='';
//// requete sql
$etu=$cnx->query("select * from etudiant join promotion on etudiant.id_promo=promotion.id_promo where etudiant.id_promo='$id_promotion'");
$resultEtu=$etu->fetchAll(PDO::FETCH_ASSOC);
if (count($resultEtu)>0) {
$i=0;
while ($Row=$resultEtu)
{
$i++;
//si c'est la première boucle nous affichons les noms des champs afin d'avoir les titres des colonnes
if ($i==1)
{
foreach ($Row as $clef=>$valeur)
$outputCsv .=trim($clef).';';
/// suppression du ; qui traine à la fin
$outputCsv= rtrim($outputCsv, ';');
/// saut de ligne
$outputCsv .="\n";
}
// nous parcourons $Row et on ajoute chaque valeur à la ligne
foreach ($Row as $clef=>$valeur)
$outputCsv .=trim($valeur).';'; c'est ici ma ligne 57
/// suppression du ; qui traine à la fin
$outputCsv= rtrim($outputCsv, ';');
/// saut de ligne
$outputCsv .="\n";
}
}
else
{
exit('Aucune donnée à enregistrer');
}
// Entêtes (headers) PHP qui vont bien pour la création d'un fichier Excel CSV
header("Content-disposition: attachment; filename=".$fileName);
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: application/vnd.ms-excel\n");
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");
echo $outputCsv;
exit();
}
3 réponses
-
Salut,
Es tu sûr que tous les champs sont renseignés dans ta base? Autrement dit es tu sûr que $value dans ta boucle ne vaut pas NULL à certain passage?
-
J'ai toujours besoin de vos aides, maintenant mon application marche bien car je télécharge déjà les fichiers .csv mais dans mon fichier il y et les codes de ma page et les données. j'ai changé les codes, voici maintenant ce que j'ai comme code
function fx_download_file_csv($id_promotion,$fileName){
global $cnx;
//Premiere ligne = nom des champs (
$xls_output = "Nom etudiant;Postnom;Telephone;Cote";
$xls_output .= "\n";
//Requete SQL
//$query='SELECT ni, ag, cact, cpat FROM indic';
//$result = mysql_query($query) or die(mysql_error());
$result=$cnx->query("select nom_etu,postnom_etu,tel_etu from etudiant join promotion on etudiant.id_promo=promotion.id_promo where etudiant.id_promo='$id_promotion'");
//$resultEtu=$etu->fetchAll(PDO::FETCH_ASSOC);
//Boucle sur les resultats
while($row = $result->fetch())
{
$tel=substr($row['tel_etu'], 4,9);
$xls_output .= "$row[nom_etu];$row[postnom_etu];$tel\n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=$fileName");
print $xls_output;
exit;
}
qui peut avoir l'idée? -
Je n'ai pas bien compris ton problème, qu'est ce qui ne fonctionne pas?