Impossible d'exporter un fichier csv suite à une erreur
tsissam
Messages postés
29
Statut
Membre
-
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();
}
A voir également:
- Impossible d'exporter un fichier csv suite à une erreur
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier impossible à supprimer - Guide
- Fichier rar - Guide
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?
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?
tsissam
Messages postés
29
Statut
Membre
Merci pour ta réponse, j'ai vu là ça ne marchait pas, maintenant je télécharge mais dans mon fichier il y a même les codes de ma page, comment faire en sorte que ça télécharge rien que mes data?
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?
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?