setlocal(LC_NUMERIC, 'C')

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : setlocal(LC_NUMERIC, 'C')

par Savageman_ » 26 févr. 2009, 17:18

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

par Hywan » 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.

par fpiat » 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) ...

par Hywan » 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.

setlocal(LC_NUMERIC, 'C')

par fpiat » 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 ?