Les nombre décimaux : barrière des langues !

Mammouth du PHP | 1353 Messages

22 juil. 2005, 09:30

Bonjour,

j'ai un problème pour lequel je ne vois aucune solution, ce qui est inquiétant...
En fait je crée un site en php en anglais, et donc lorsque je demande par exemple une durée cela varie entre 0.25 et 5 avec un pas de 0.25. Comme c'est de l'anglais le séparateur est bien sur le .
En revanche lorsque je l'exporte en .csv il est lu par des Francais qui utilisent Excel en francais, et donc les chiffres avec des . sont considérés comme des string.

Comment puis je solutionner ce problème ? Je peux éventuellement remplacer tous les ". "par des "," dans le csv mais il y a des descriptions donc cela n'est pas idéal.

Merci d avance

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 juil. 2005, 09:37

Un bouton pour choisir le format de conversion ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 1353 Messages

22 juil. 2005, 09:44

comment ca ?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 juil. 2005, 09:45

J'imaginais la page :
Votre fichier va être exporté en CSV, voulez vous le format [anglais - séparateur décimal .][français - séparateur décimal ,]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 juil. 2005, 09:47

Si tu es sûr que le cvs ne sera lu que par des français, remplace le . par une , dans tes champs AVANT de l'exporter
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1353 Messages

22 juil. 2005, 09:51

AVANT de l'exporter
je ne vais pas faire dans la base de données si ?
Parce que après les valeurs ne seront plus interprétables ?
Il faut que je fasse une copie de la BDD, que je remplace et que j'exporte ?

Mammouth du PHP | 1353 Messages

22 juil. 2005, 09:53

Votre fichier va être exporté en CSV, voulez vous le format [anglais - séparateur décimal .][français - séparateur décimal
ok pour cela mais si la personne choisi francais comment je le traite ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 juil. 2005, 10:03

Si tu exporte avec un SELECT INTO OUTFILE, ma solution ne fonctionne pas, c'est vrai.

Je vais chercher un peu
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1353 Messages

22 juil. 2005, 10:11

Effectivement c'est ce que j'utilise, en tout cas pour le moment...

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 juil. 2005, 10:18

Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Mammouth du PHP | 1353 Messages

22 juil. 2005, 10:35

LOAD DATA INFILE est le complémentaire de SELECT ... INTO OUTFILE . Syntaxe de SELECT . Pour écrire des données depuis une table dans un fichier, utilisez SELECT ... INTO OUTFILE . Pour lire les données dans la table, utilisez LOAD DATA INFILE
Au niveau du traitement des caractère je n'ai pas vu plus de possibilités.

Mammouth du PHP | 1353 Messages

22 juil. 2005, 11:31

Seule solution pour le moment :

Editer le fichier .CSV, utiliser STRTOK, remplacer les "." par des "," dans le bon champ, reconcaténer la chaine et utiliser le replace...

Si qq un a plus simple je suis preneur !!!!

Mammouth du PHP | 1353 Messages

22 juil. 2005, 15:15

Finalement utilisation split, ensuite modification des cases puis création du nouveau fichier ligne par ligne.

Voila merci à tous.