Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2993 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  setlocale

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

setlocale

n°1767542
thierryR
J'aime les bretzels
Posté le 31-07-2008 à 22:53:25  profilanswer
 

J'ai fais un programme en php, html.
En locale j'ai rentré ça:
 

setlocale(LC_ALL, 'fr_FR.ISO_8859-1', 'fr_FR','fr','fr','fra','fr_FR@euro');


 
La fonction strtoupper fonctionne très bien même avec des caractères accentués.
La ou réside un problème c'est avec le séparateur de décimal. J'ai une virgule au lieu d'un point. Du coup, mes champs numériques ne sont que partiellement remplis.
 
si je reprends la locale anglaise j'ai exactement l'inverse.
strtoupper fonctionne mais pas avec les caractères accentués.
Le séparateur de décimal est bien un point. donc mes champs numériques se remplissent correctement.
 
Je ne trouve pas le compromis entre les deux.
Une petite aide serait bienvenue.


---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
mood
Publicité
Posté le 31-07-2008 à 22:53:25  profilanswer
 

n°1768453
Dj YeLL
$question = $to_be || !$to_be;
Posté le 03-08-2008 à 13:20:53  profilanswer
 

Utiliser number_format ?


---------------
Gamertag: CoteBlack YeLL
n°1777125
thierryR
J'aime les bretzels
Posté le 25-08-2008 à 14:00:15  profilanswer
 

C'est ce que j'utilise actuellement, mais auparavant mon "setlocale" était suffisant ??? C'est bizarre.


---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
n°1777289
skeye
Posté le 25-08-2008 à 16:28:09  profilanswer
 

thierryR a écrit :

C'est ce que j'utilise actuellement, mais auparavant mon "setlocale" était suffisant ??? C'est bizarre.


En français le séparateur a toujours été la virgule.


---------------
Can't buy what I want because it's free -
n°1777419
thierryR
J'aime les bretzels
Posté le 25-08-2008 à 21:16:36  profilanswer
 

OK, mais dans les champs numériques on a un problème. Comme le point n'existe plus, le chiffre est tronqué de ses décimales.
En conclusion Dj YeLL a raison. Il faut reformater les chiffres.


---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
n°1777454
skeye
Posté le 25-08-2008 à 22:08:34  profilanswer
 

thierryR a écrit :

OK, mais dans les champs numériques on a un problème. Comme le point n'existe plus, le chiffre est tronqué de ses décimales.
En conclusion Dj YeLL a raison. Il faut reformater les chiffres.


je m'exprime peut-être mal - le séparateur indiquant dans un nombre qu'on passe aux décimales est en français bien la virgule.:o


---------------
Can't buy what I want because it's free -
n°1777458
thierryR
J'aime les bretzels
Posté le 25-08-2008 à 22:12:53  profilanswer
 

Ta définition est tout a fait compréhensible. J'ai bien compris. La virgule est le séparateur requis. Ce que je soulignais c'est l'incompatibilité avec les champs numériques, qui demandent un point (only).


---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
n°1777466
skeye
Posté le 25-08-2008 à 22:30:51  profilanswer
 

thierryR a écrit :

Ta définition est tout a fait compréhensible. J'ai bien compris. La virgule est le séparateur requis. Ce que je soulignais c'est l'incompatibilité avec les champs numériques, qui demandent un point (only).


quels champs numériques?


---------------
Can't buy what I want because it's free -
n°1777481
thierryR
J'aime les bretzels
Posté le 25-08-2008 à 22:50:56  profilanswer
 

Ceci dépasse un peu le sujet php.
Quand j'additionne 2 variables une virgule apparait suivant la locale configurée.
Si je veux la placer dans une table mysql dans un champ numérique un tronquage se produit.


---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
n°1777550
skeye
Posté le 26-08-2008 à 08:56:33  profilanswer
 

thierryR a écrit :

Ceci dépasse un peu le sujet php.
Quand j'additionne 2 variables une virgule apparait suivant la locale configurée.
Si je veux la placer dans une table mysql dans un champ numérique un tronquage se produit.


Alors le problème est peut-être plutôt ta manière de faire l'insertion dans la base - avec des requêtes paramétrées sur un champ numérique, php devrait utiliser la locale pour déterminer correctement la valeur à insérer...ou alors c'est un bug de php ou du connecteur mysql de php...


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 26-08-2008 à 08:56:33  profilanswer
 

n°1777697
thierryR
J'aime les bretzels
Posté le 26-08-2008 à 13:14:39  profilanswer
 

Étant plutôt bricoleur qu'informaticien, j'admets facilement que ma méthode est a revoir. J'ai tout à apprendre...  Pour palier à ce nouveau problème je rajoute une ligne en php:

$mavar = number_format($mavar,2,'.','');


puis je continue ma procédure classique

mysql_query("REPLACE INTO.....


et ça fonctionne.
Ce que je ne comprends pas, c'est que jusqu'ici tout allait bien. Maintenant il faut formater explicitement le champ avant enregistrement. D'un autre coté, ça rend l'application plus robuste.


---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
n°1777703
skeye
Posté le 26-08-2008 à 13:39:26  profilanswer
 

thierryR a écrit :

Étant plutôt bricoleur qu'informaticien, j'admets facilement que ma méthode est a revoir. J'ai tout à apprendre...  Pour palier à ce nouveau problème je rajoute une ligne en php:

$mavar = number_format($mavar,2,'.','');


puis je continue ma procédure classique

mysql_query("REPLACE INTO.....


et ça fonctionne.
Ce que je ne comprends pas, c'est que jusqu'ici tout allait bien. Maintenant il faut formater explicitement le champ avant enregistrement. D'un autre coté, ça rend l'application plus robuste.

 

Tu as essayé avec des requêtes préparées ou pas? En bindant ta variable avec un type de données float, ça devrait marcher sans toucher à quoi que ce soit, ou alors php fait n'importe quoi...ce qui évidemment n'est pas exclu.

Message cité 1 fois
Message édité par skeye le 26-08-2008 à 13:39:40

---------------
Can't buy what I want because it's free -
n°1777968
thierryR
J'aime les bretzels
Posté le 26-08-2008 à 19:32:26  profilanswer
 

skeye a écrit :


 
Tu as essayé avec des requêtes préparées ou pas?


Heu... Là je ne comprends pas. Ce que je peux dire: Avant l'enregistrement, il y a une somme mathématique de 4 autres champs. C'est là que la virgule apparait.
 

skeye a écrit :


En bindant ta variable avec un type de données float, ça devrait marcher sans toucher à quoi que ce soit, ou alors php fait n'importe quoi...ce qui évidemment n'est pas exclu.


Mes champs mysql sont de type float(8,2).  Est-ce suffisant ?


---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
n°1778051
skeye
Posté le 26-08-2008 à 22:42:40  profilanswer
 

thierryR a écrit :


Heu... Là je ne comprends pas. Ce que je peux dire: Avant l'enregistrement, il y a une somme mathématique de 4 autres champs. C'est là que la virgule apparait.


Non, la virgule n'est que la représentation textuelle du passage aux décimales, et n'apparait vraiment que quand tu demandes à représenter ton nombre comme une chaine de caractères. Ce qui est le cas si tu crées une chaine de caractères représentant ta requête pour l'exécuter, mais pas si tu utilises des requêtes préparées (il faut mysqli pour ça par contre).
 
regarde la doc de mysqli_prepare, mysqli_bind_param, etc. pour des exemples de requêtes préparées...


---------------
Can't buy what I want because it's free -

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  setlocale

 

Sujets relatifs
pb avec setlocale[PHP] Pb avec - setlocale -
[PHP - setlocale en FR marche pas] 
Plus de sujets relatifs à : setlocale


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR