WampServer

Apache, PHP, MySQL on Windows 

 
  • Accueil forum
  • Retour à WampServer
  • presentation
  • Download
  • Addons
  • Formations
  • Alter Way

 
Voir le sujet: Précédent•Suivant
Aller à : Liste des Forums•Liste des messages•Nouvelle discussion•Recherche•Connexion•Imprimer la vue
dot separator instead of comma for decimal
Envoyé par: natchoum (---.w90-44.abo.wanadoo.fr)
Date: 02 July 2020 à 13:19

Hello all,

I'm trying to correct some configuration on number separator on wampwerver for php, here are my versions :

WampServer Version 3.1.7 64bit
Created by Romain Bourdon (2005)
Maintainer / Upgrade to 2.5 by Herve Leclerc
Upgrade to 3 by Otomatic (wampserver@otomatic.net)
Multi styles for homepage by Jojaba
Installer by Inno Setup: [www.jrsoftware.org]
Forum Wampserver: [forum.wampserver.com]
______________________ Versions used ______________________
Apache 2.4.37 Port 80- PHP 7.2.14
MySQL 5.7.24 Port 3306
PHP 5.6.40 for CLI (Command-Line Interface)

And i confirm that my wampserver icon is green.

Since this week i was using a VM on Linux with an apache web server, installed by me.
This was a copy of the webserver i'm using for all my environment at work, test and production included.

My VM isn not usable anymore because we stopped paying for the license ( and this choice is out of my hands ) so i tryed to used again wampserver. I haven't used it since my studies 8 years before so i hope my problem come from a misunderstanding of mine.

I run it on a windows 10 professional edition in french ( because i'm french and it's a company computer ), so i had selected french has language during the installation.

We are using git so i'm totally sure my php code is the same on my linux webserver than in my wamp.

When i work in local with wampserver, decimal number are comma separated, which is not at all what i want it to do. On my Linux webserver, these decimal number are dot separated has they should be.

I'm a web developper but i have to admit i'm not totally at ease with apache configuration except for basics part like error management.

This difference of separator between my two servers ( local and online ) makes thing really hard for me when i try to test something because my server work linked to an ERP ( IFS or SAP ) and they expect a format with dot for decimal separator.

I would like to change this in my configuration because i don't want to use number_format or str_replace in each of my codes to correct the format, corresponding to the environement i'm using.

I have obviously done some researches before posting here but i've only founded answer which ask me to edit my php codes and i have a lot of them ( arround 6 years of work ) and i don't want to edit codes which work perfectly in prodcution environment on my apache webserver on centos.

Except this problem about decimal separator, my wampserver works perfectly well, even with my differents databases ( oracle / mysql ) on all my environments ( i've tryed to link it to my production database without any error ).

It seems that i can't copy paste my php.ini here because of a character limit so ask me if you need more information to help me with this case.

Sorry if my english is not perfect, as i said, i'm not a native.

Options: Répondre•Citer ce Message
Re: dot separator instead of comma for decimal
Envoyé par: RiggsFolly (Modérateur)
Date: 02 July 2020 à 13:40

Hi,

There is a French version of this Forum, you may get better help there from people that have solved this issue already.

I will move this question over to there.

---------------------------------------------------------------------------------------------
(Windows 10 Pro 64bit) (Wampserver 3.3.4 64bit) Aestan Tray Menu 3.2.5.4
<Apache versions MULTIPE> <PHP versions MULTIPLE> <MySQL Versions MULTIPLE>
<MariaDB versions MULTIPLE> <phpMyAdmin versions MULTIPLE> <MySQL Workbench 8.0.23>

Read The Manuals Apache -- MySQL -- PHP -- phpMyAdmin
Get your Apache/MySQL/mariaDB/PHP ADDONs here from the WAMPServer alternate Repo
-X-X-X- Backup your databases regularly Here is How dont regret it later! Yes even when developing -X-X-X-

Options: Répondre•Citer ce Message
Re: dot separator instead of comma for decimal
Envoyé par: natchoum (---.w90-44.abo.wanadoo.fr)
Date: 02 July 2020 à 15:11

Ok , i've tryed on the english part because there is more people on it but you are right, so i translate my topic in french :

Bonjour à tous,

je souhaiterai modifier le séparateur de décimale sur les nombres pour utiliser des points et non des virgules sur mon wampserver. Voici la version de wamp que j'utilise :


WampServer Version 3.1.7 64bit
Created by Romain Bourdon (2005)
Maintainer / Upgrade to 2.5 by Herve Leclerc
Upgrade to 3 by Otomatic (wampserver@otomatic.net)
Multi styles for homepage by Jojaba
Installer by Inno Setup: [www.jrsoftware.org]
Forum Wampserver: [forum.wampserver.com]
______________________ Versions used ______________________
Apache 2.4.37 Port 80- PHP 7.2.14
MySQL 5.7.24 Port 3306
PHP 5.6.40 for CLI (Command-Line Interface)


Je vous confirme bien que mon icône wamp est verte et qu'en dehors de ce problème, mon serveur local fonctionne parfaitement.

Jusqu'à présent je travaillais sur une VM linux mais n'ayant plus de licence pour celle-ci, j'ai décidé d'installer wamp serveur.

Ma machine est sous windows 10 profesionnal, en version française.

Sachant que j'utilise git, je suis certain que mes pages de code php sont les mêmes sur mon locale que sur mon ancienne VM ou que sur mes serveurs de recette / production.

Actuellement, sur wampserver, tous les nombres décimaux contiennent une virgule au lieu d'un point dans le séparateur, ce qui pose problème lors des connexions à des applications tierces ou à mes différentes bases de données. Sur mon ancienne VM et sur mes serveurs non locaux, le séparateur est bien un point comme je le souhaite.

Je ne suis pas un grand expert en configuration apache et ce problème me complexifie la vie lors des tests puisque mes serveurs communiquent avec différentes applications tierces, dont des ERP ( tels qu'IFS ou SAP ) qui attendent un format de nombre flottant traditionnel ( c'est à dire avec un point ).

Evidemment j'ai déjà effectué un certain nombre de recherche par moi même et les seules solutions que j'ai trouvées sont d'éditer mes codes php pour ajouter des number_format, des str_replace ou de modifier les variable globale de mon OS ( ce que je ne souhaite pas faire puisque j'utilise aussi d'autres applications non liées à mon serveur web ( excel par exemple ) en français qui doivent garder la vigule en temps que séparateur.

En dehors de ce problème, mon serveur wamp fonctionne parfaitement, même pour les différentes connexions vers mes applications tierces ou bases de données ( que ce soit oracle ou mysql ), qu'elles soient en local ou non ( je peux me connecter à ma base de production depuis wamp sans erreur, en dehors du problème de format de nombre ).

Apparemment je ne peux copier le contenu de mon php.ini à cause de la limite de caractères donc si vous avez besoin de plus amples informations pour m'aider à résoudre ce problème, n'hésitez pas à me demander.

Merci de m'avoir lu,

Bonne journée,



Modifie 1 fois. Derniere modification le 02/07/2020 à 15:15 par natchoum.

Options: Répondre•Citer ce Message
Re: dot separator instead of comma for decimal
Envoyé par: Otomatic (Modérateur)
Date: 02 July 2020 à 17:01

Bonjour,

> Actuellement, sur wampserver, tous les nombres décimaux contiennent une virgule au lieu
> d'un point dans le séparateur,
Dans quoi ? Des variables php ? Des colonnes de base de données ?

Une variable PHP qui contient 123.456789 en nombre décimal contiendra toujours 123.456789 que ce soit sous Linux ou sous Windows Wampserver. Seul l'affichage de cette valeur peut éventuellement remplacer le point par une virule avec des instructions comme printf() et en jouant avec la locale.

Voir :
printf() et principalement la différence entre les spécificateurs de format f et F.

setlocale()

---------------------------------------------------------------
Documentation Apache - Documentation PHP - Documentation MySQL - Wampserver install files & addons



Modifie 1 fois. Derniere modification le 02/07/2020 à 19:37 par Otomatic.

Options: Répondre•Citer ce Message
Re: dot separator instead of comma for decimal
Envoyé par: natchoum (---.w90-44.abo.wanadoo.fr)
Date: 03 July 2020 à 09:32

Bonjour,

Effectivement je n'ai pas été assez précis, mon problème ne se trouve pas au niveau des bases de données qui ne sont pas en local ( mon wamp me sert uniquement pour executer du code php, et se connecte à des bases de données distantes hébergées sur des serveurs centos dans un datacenter ).

Je me heurete à ce problème au niveau des affichages effectivement, mais aussi lors de l'envoi de mes variables de type float une fois concaténées dans une string dans une requête PDO.

Par exemple j'initie une connexion PDO vers mon serveur oracle et j'appelle une procédure sql via une requête préparée. Ma procédure prend en argument une chaîne de caractère contenant la concaténation des informations que la procédure va parser pour récupérer les variables et effectuer son travail. Je passe donc effectivement mes valeurs sous forme de string et j'imagine que c'est là que se trouve le coeur de mon problème ( malheureusement je n'ai pas la main sur les paramètres de ces procédures qui sont des procédures proposées par mon ERP ).

Pour exemple voici comment j'initie ma connexion PDO :

try {
	$this->db = new PDO($sPdoHost, $sPdoUser, $sPdoPasswd);
	$this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 
}
catch (Throwable $e) {
	echo "Connection Error: " . $e->getMessage();
	die;
}

et comment je créé ma string que j'envoie dans la procédure ( en appelant la fonction addToAttr décrite ci-dessous ) :

// $sAttrName is a string & $value is a mixed value, a float in this example
public function addToAttr($sAttrName, $value)
	{
		$value = $this->db->quote($value);
		$sql = "BEGIN CLIENT_SYS.Add_To_Attr('".$sAttrName."', ".$value.", :attr_);END;";
		$oStmt = $this->db->prepare($sql);
		$oStmt->bindParam(':attr_', $this->aData['attr'], PDO:tongue sticking out smileyARAM_STR, 32000);
		return $oStmt->execute();
	}

et pour finir je lance l'appel à la procédure via :

public function new__($sApi) {
	$sSql = 'BEGIN '.$sApi.".NEW__(:result_, :attr_); END;";
	$oStmt = $this->db->prepare($sSql);
	$oStmt->bindParam(':result_', $this->aData['result'], PDO:tongue sticking out smileyARAM_STR, 4000);

	$oStmt->bindParam(':attr_', $this->aData['attr'], PDO:tongue sticking out smileyARAM_STR, 4000);
	return $oStmt->execute();
}

J'imagine donc que le problème se pose au moment de la concaténation de ma variable float dans la string.

Si selon vous le problème vient du fait que mon système soit en français sous windows et non de wamp server j'irai investiguer de ce côté là mais sur un système en français sous ubuntu / debian / centos je n'ai pas l'erreur en question.

Si je comprends bien le lien que vous m'avez donnée précédemment, vous conseillerez de faire un appel à setLocale() au niveau de mon fichier d'index contenant les différentes routes vers mes différentes pages / modules ( j'utilise actuellement un framework "maison" où tous les appels passent par un même point d'entrée qui reroute vers les différentes pages/modules de mon application web ). Ce qui ne serait pas nécessaire ou fait implicitement sur mes systèmes UNIX.

Merci pour cette réponse rapide qui me donne matière à recherche.

P.S désolé pour les smiley affichés lorsque ":" se retrouve accolé à un "P"



Modifie 3 fois. Derniere modification le 03/07/2020 à 09:45 par natchoum.

Options: Répondre•Citer ce Message
Re: dot separator instead of comma for decimal
Envoyé par: Otomatic (Modérateur)
Date: 03 July 2020 à 11:09

Bonjour,

Vous effectuez un “transtypage” de variables float -> string qui, pour le “point décimal” dit :

Le point décimal est défini dans la locale du script (catégorie LC_NUMERIC). Voir la fonction setlocale().

Voir : Transtypage

et, ce transtypage prend, pour le point numérique la valeur LC_NUMERIC par défaut.
Sous Windows, ceci est définit depuis la configuration de la langue et de la région du système d'exploitation (accessible depuis le Panneau de Contrôle) et donc, la virgule pour séparateur décimal.
Toutes ces informations “locale” sont vues par l'instruction PHP localeconv

Il faut donc forcer LC_NUMERIC avant d'effectuer le transtypage par un setlocale(LC_NUMERIC, 'en_US');

---------------------------------------------------------------
Documentation Apache - Documentation PHP - Documentation MySQL - Wampserver install files & addons

Options: Répondre•Citer ce Message
Re: dot separator instead of comma for decimal
Envoyé par: natchoum (---.w90-44.abo.wanadoo.fr)
Date: 03 July 2020 à 12:19

Bonjour,

Merci pour ces précisions et l'aide que vous m'avez apporté, j'avoue qu'ayant travaillé majoritairement sur des systèmes en langue anglaise, je n'avais jamais eu ce problème précédemment ( c'est surtout la première fois que je travaille en local sous windows ).

J'ai fais un test et cela semble résoudre mon problème. Je vais faire de plus amples vérifications mais vous m'avez donné suffisament de matière pour que je puisse me débrouiller par moi même désormais.

Mon problème est donc résolu.

Options: Répondre•Citer ce Message


Aller à : Liste des Forums•Liste des messages•Recherche•Connexion
Désolé, seuls les utilisateurs connectés peuvent envoyer des messages dans ce forum.
Cliquer ici pour se connecter

design by jidePowered by Alter Way get firefoxget PHP