Problème d'ajout de guillemets dans fichier csv avec la fonction fputcsv

TOULOUSELAUTREC69 Messages postés 4 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 11 juin 2009 - 8 juin 2009 à 16:54
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 - 11 juin 2009 à 17:30
Bonjour,
Je génère un fichier csv sur mon site web qui contient la liste de mes clients du jour.
Ensuite j'importe ce fichier dans mon logiciel de facturation CIEL.
Globalement, tout se passe bien sauf que, quand je fais un fputcsv avec une donnée contenant un ou des espaces, la fonction entoure cette donnée avec des guillemets.
Résultat : quand j'importe dans CIEL, il faut que je repointe toutes mes fiches client afin d'enlever ces #@! de guillemet pirates !!!
Est-ce que quelqu'un a déjà eu ce souci ou pourrait me conseiller pour résoudre ce problème ?
Merci d'avance.
A voir également:

6 réponses

nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
10 juin 2009 à 01:01
Bonjour,

Es-tu certain d'avoir bien lu la documentation d ela focntion futcsv ?

intfputcsv
( resource<tt class= "parameter">$handle</tt>
, array<tt class="parameter">$fields</tt>
[, string<tt class="parameter">$delimiter</tt>
[, string<tt class="parameter">$enclosure</tt>
]] )

le quatrième paramètre permet de choisir le caractère de délimitation d echaînes, et apr défaut, c'ets le guilelmet double, puisqu'il est défini en tant qu'enclos de chaines de caractères dans la définition classique du CSV depuis plus de 2 décennies.

Tu peux lui déclarer de cette manière:

int fputcsv
( resource<tt class ="parameter">$handle</tt>
, array<tt class="parameter">$fields</tt> , string<tt class="parameter">$delimiter</tt> , '' )

pour avoir la chaine vide en tant que délimiteur.

Il faut savoir que Ciel a une vision assez space du CSV, puisqu'avec leur format si par malheur un libellé a une virgule, tout coince.
0
TOULOUSELAUTREC69 Messages postés 4 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 11 juin 2009
11 juin 2009 à 14:15
Super !
Merci Nautilus.
Depuis 15 ans que je suis dans l'Informatique, il faudrait effectivement qu'un jour je me mette à lire les docs jusqu'au bout ;-)
0
TOULOUSELAUTREC69 Messages postés 4 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 11 juin 2009
11 juin 2009 à 14:50
En fin de compte, ça ne marche pas avec ' ' : il faut que le champ enclosure contiennent au moins un caractère.
sinon message "php warning" et pas de fichier csv généré au bout du fil.

NULL ne marche pas non plus :-{
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
11 juin 2009 à 15:23
Etrange, tu es sous quelle version de PHP. Chez moi la chaine vide fonctionne.
Mais en cas de vrai problème avec ça, tu mets espace comme séparateur et tu fais ensuite un trim de la chaine...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TOULOUSELAUTREC69 Messages postés 4 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 11 juin 2009
11 juin 2009 à 15:31
Pour la version PHP :
PHP Version 5.2.3-1ubuntu6.4

J'avais pensé aussi à l'espace avec un chr(20) comme enclose mis pour le trim : tu le fais à quel moment ?
Concrètement, je mets mes données dans un array ; après, je fais le fputcsv avec le array en argument.
Je ne vois pas comment faire le trim sinon en rouvrant le fichier et en traitant ligne après ligne ?
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
11 juin 2009 à 17:30
moi pour les chaines stockées en SGBD, j'ai tendance à forcer un trim pour toute ouverture, donc dans mon cas, c'est à l'exploitation..
0
Rejoignez-nous