Problème avec fichier CSV

Résolu
cs_xris Messages postés 6 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 17 novembre 2005 - 16 nov. 2005 à 23:25
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 - 17 nov. 2005 à 00:50
Bonjour,

Je sui perdu : j'utilise la fonction fgetcsv de la façon suivante :

$row = 1;
$handle = fopen("data.csv", "rb");

while (($data = fgetcsv($handle, 1024, ";")) !== FALSE) {
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
echo utf8_encode($data[$c]) . "
\n";
}
}

et dans mon fichier data.csv, j'ai 2 lignes :
émilé;durand
élodie;dupont

Lorsque la première lettre est un caractère spécial (ici, accent), il est supprimé dans l'echo.
En l'occurence, j'aurai :
milé
durand
lodie
dupont

Ai-je commis une erreur ?
Par avance, merci de m'aider.

Xris

10 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
17 nov. 2005 à 00:11
Mmmm... Très bonne piste !



Bon alors, j'ai une autre idée à te donner :

SI => Ton fichier csv est de la forme "une ligne par enregistrement"



SI =>les séparateurs sont des ';'





ALORS =>



Tu peut faire un truc comme ça :



$arr = file('pouet.csv'); // te sort le fichier par ligne

foreach($arr as $ligne) {

// Et là tu as le tableau recherché par fgetcsv

$csv = explode(';' , $csv);

}





A plus



}
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
16 nov. 2005 à 23:33
Bonjour,



Apparement, il n'y a aucune erreur dans ce script...

Essaye d'encadrer les données par des guillemets :



"émilé";"durand"

"élodie";"dupont"





Mais aussi d'ouvrir le fichier csv en mode texte, et non binaire...

$handle = fopen("data.csv", "rt");



Finallement, je pense que l'erreur est là !



Bonne chance...





A+
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
16 nov. 2005 à 23:34
Et pour finir...



Si les données doivent être affichée dans une page HTML, mieux vaut utiliser la fonction :



htmlspecialchars();



au lieu de



utf8_encode();
0
cs_xris Messages postés 6 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 17 novembre 2005
16 nov. 2005 à 23:56
Merci pour la piste.
J'ai modifié le CSV pour y rajouter des guillemets, ça fonctionne !
le "rt" est évidemment plus cohérent, ainsi que le htmlspecialchars.

Le seul hic, c'est que je ne suis pas maître des fichiers CSV, ils arriveront vraisemblablement sans les guillemets (c'est le cas jusque là).
Y aurait-il une autre piste ?

Merci
0

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

Posez votre question
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
17 nov. 2005 à 00:01
As-tu fait un essai AVEC fopen('', 'rt'); et SANS les guillemets ?



Car, ça devrait fonctionner aussi...
0
cs_xris Messages postés 6 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 17 novembre 2005
17 nov. 2005 à 00:05
en fait, j'y vois plus clair. fgetcsv accèpte le paramètre optionnel enclosure qui sépcifie quel est le caractère de délimitation des chaînes. Par défaut, c'est le guillement double, d'où ta remarque.

Dans mon cas, il n'y en a pas, mais si je mets "", ça ne fonctionne pas :
Warning: fgetcsv() [function.fgetcsv]: enclosure must be a character

Je continue ...
0
cs_xris Messages postés 6 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 17 novembre 2005
17 nov. 2005 à 00:08
essai AVEC fopen('', 'rt'); et SANS les guillemets :
même problème.
0
cs_xris Messages postés 6 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 17 novembre 2005
17 nov. 2005 à 00:28
Merci à toi, je vais tester tout ça.
@+
0
cs_xris Messages postés 6 Date d'inscription lundi 1 mars 2004 Statut Membre Dernière intervention 17 novembre 2005
17 nov. 2005 à 00:46
Nickel, ça fonctionne.
Encore merci !
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
17 nov. 2005 à 00:50
Heureux de t'avoir aidé...



A+
0
Rejoignez-nous