fputcsv PHP5 (gerer les espaces, les apostrophes etc...) - PHP - Programmation
Marsh Posté le 12-03-2009 à 12:12:55
tu as remarqué que dans l'exemple que tu as pompé , les champs sont séparé par des virgules et que tu utilise des points virgules ?
forcement, le split ne rempli plus son usage
Marsh Posté le 12-03-2009 à 12:15:09
oui c'était bien volontaire les ";" pour pouvoir mettre chaque nom dans des colonnes separees.
Si j'avais laissé les virgules, toute la ligne aurait été dans la meme colonne
Marsh Posté le 12-03-2009 à 12:18:45
non, vu que derrieère tu fais un split
Code :
|
Marsh Posté le 12-03-2009 à 12:25:56
oui ca me parait bizarre aussi, pourtant avec les ";" il me met bien chaque nom dans une colonne séparée :s
mais admettons que je fasse sans split, juste ca :
Code :
|
bon là aussi ca va marcher je pense. Mais ca ne me résoud pas mes problèmes de gestion d'espaces (dans le cas ou j'ai "Peter Jackson;Griffin" --> tout sera sur une colonne)
Marsh Posté le 12-03-2009 à 14:02:10
il te le mets dans le colonnes séparées par hasard
en fait, fputcsv a l'impression d'ecrire une seule donnée ( contenant des ; ) , mais lors de la lecture, les points virgules sont interprétés comme des séparateurs de colonnes
tu récupères tes données comment ?
quand je dois générer un csv, je construit un tableau a deux dimensions. Pour tes données , ça donne :
Code :
|
et ensuite, j'utilise fputcsv
Code :
|
Marsh Posté le 12-03-2009 à 14:53:51
merci de ton aide, en fait j'ai trouvé c'était vraiment débile ...
Code :
|
le soucis venait simplement de mon excel qui prenait les ; comme délimiteur
je devais donc préciser a fputcsv le ';' en 2eme paramètre...lol
Marsh Posté le 09-04-2009 à 14:53:56
Bonjour @ toutezéatous,
Je me suis inspirée de ce code pour générer un fichier excell (.csv) avec les données d'une table sql. Tout a l'air de bien fonctionner (je n'ai aucun message d'erreur) mais le fichier généré est vide ;-( Je n'ai même pas le nom des champs...
J'y ai passé mon après-midi mais là je craque un peu (en fait à mort !!) alors je viens vous demander un petit peu d'aide...
La version de PHP est la 5.2.5
Voici mon code :
Code :
|
J'ai essayé :
Code :
|
Avec le même résultat...
J'ai aussi essayé pour le fun de mettre un fwrite("toto" ) juste après le fopen() mais toujours rien, c'est vide !
J'ai vérifié ma table qui est bien alimentée et si je fait un print_r($row), j'obtiens bien mes valeurs :
Code :
|
Si vous avez une idée ce serait super cooooooooooool !
Merci @ toutezéatous et excellente soirée !
Marsh Posté le 09-04-2009 à 16:00:56
karpediem a écrit :
|
Juste en passant : le if ne sert à rien : si mysql_query plante, tu passes dans le die(mysql_error()).
Et s'il ne plante pas ta condition (!$result) n'est pas vérifiée...
Citation : J'ai aussi essayé pour le fun de mettre un fwrite("toto" ) juste après le fopen() mais toujours rien, c'est vide ! |
Tu as fais
Code : |
et tu as un fichier vide ?!
Vérifie les droits et l'espace disponible... Parce que je ne vois pas trop, au niveau de PHP, où est le problème.
Tu peux aussi essayer :
$test = fputcsv($fp, $row) or die ("Erreur" );
Marsh Posté le 09-04-2009 à 16:52:46
Bonjour macgawel et merci pour cette réponse ultra-rapide !
Si je fais :
Code :
|
ça me créé bien un fichier là où j'ai indiiqué, sur le serveur avec 'toto' dedans.
Du coup, j'ai utilisé ma boucle :
Code :
|
Et c'est bon ! ça me créé bien sur le serveur le bon fichier au bon format.
Du coup, ce qui ne va pas, c'est ma partie des "header" qui devrait me permettre d'enregistrer mon fichier en local là où je veux...J'ai essayé d'inverser la génération du fichier avec les instructions header pensant que peut-être le fichier n'était pas encore généré au moment de la sauvegarde, mais ça n'a rien changé...
Une nouvelle idée ?
Déjà un grand MERCI pour ce début de diagnostic !!!
Marsh Posté le 09-04-2009 à 17:03:19
Citation : N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards. |
Marsh Posté le 09-04-2009 à 17:17:55
Voici le code complet de ma page, je n'arrive pas à identifier ce qui peux merdouiller...
Code :
|
Tu vois quelque chose qui pourrait faire que ça ne va pas ?
Merci et @ +
Marsh Posté le 09-04-2009 à 17:19:13
Maintenant j'ai le contenu de ma page html dans mon fichier...
Marsh Posté le 09-04-2009 à 17:22:27
Peut-être que je devrais mettre mon traitement dans un fichier à part... ça pourrait être ça le pb ?
Marsh Posté le 09-04-2009 à 19:11:37
ça y est j'ai trouvé !!!!
Il fallait mettre à la fin ce 2 instructions :
Code :
|
Un grand MERCI à tous ceux et celles qui nous aident à réfléchir !
Excellente soirée @ toutezéatous !
Marsh Posté le 12-03-2009 à 12:03:36
Hello,
Ma question est toute simple :
Comment fputcsv gère les espaces, quotes etc ?
j'ai essayé divers tests tels que :
celui ci marche :
le même mais en essayant de gérer les espaces, apostrophes etc :
ici ca ne marche plus, il me sort toute la première ligne dans la même colonne
quelqu'un peut-il m'aider svp ?