setlocal(LC_NUMERIC, 'C')

Petit nouveau ! | 3 Messages

25 févr. 2009, 18:00

Bonjour,
J'ai un problème avec une installation PHP sur un serveur IIS (non ce n'est pas un gros mot) :
le point décimal est tranformé en virgule.

La fonction setlocal(LC_NUMERIC, 'C') semble résoudre le problème, mais y a t-il des effets de bord possibles :
printf,
installation avec Apache sur un système nix,
autres ?

ViPHP
ViPHP | 4674 Messages

25 févr. 2009, 18:13

Hey :-),

Par défaut, il est possible que le serveur IIS ait des configurations bizarres pour le local (comprendre la localisation). Il est préférable de lui remettre les pendules à l'heure (sans mauvais jeu de mot) avec la fonction setlocale(). Le mieux est de tenter :
setlocale(LC_ALL, 'fr_FR'); // si on veut fr_FR
Si on a toujours un point-virgule, ce n'est pas normal. On cherchera autre chose, mais on va commencer par là :-). Par ailleurs, utiliser la constante LC_ALL devrait résoudre les effets de bords sur les fonctions de formatage.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Petit nouveau ! | 3 Messages

25 févr. 2009, 18:31

Etant donné que l'appli n'est pas seulement installée en France, le LC_ALL 'fr_FR' me semble peut-être un peu trop "colonialiste". Le noeud du problème est quand on veut écrire une valeur 1,23 dans mySql et un champ float(4,2) ...

ViPHP
ViPHP | 4674 Messages

25 févr. 2009, 19:06

En fait, c'est un problème d'affichage seulement. Les locales servent uniquement à ça.
Dans tous les cas, dans la base de données, les nombres sont codés avec un point, comme à l'anglaise. On ne doit pas essayer d'y mettre une virgule car ce sera faux.

Si on veut modifier l'affichage, il faut jouer avec setlocale(LC_*, $lang). Notez : si on modifie LC_ALL ou LC_NUMERIC, ça revient au même, il faudra toujours connaître la valeur de $lang. On pourra s'aider de cette réponse. À mon avis, c'est le seul moyen de « contourner » le problème, ou du moins, de le résoudre proprement.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Savageman_
Invité n'ayant pas de compte PHPfrance

26 févr. 2009, 17:18

Au pire : http://fr.php.net/number_format
ça passe partout ! ;)