cerhu > linux.debian.user.french

ajh-valmer (03/02/2020, 14h30)
Bonjour,

Depuis peu, lorsque j'INSERT ou UPDATE une table MySQL,
via scripts PHP et SQL, je mets le montant : "30€"
et apparait dans le champ via phpmyadmin : "30¤".
Pareil si j'écris "30?".

Pourtant, si j'interroge la table (SELECT),
apparait bien dans le navigateur "30?".

L'interclassement est UTF8_general_ci.
Si je mets : latin1_general_ci, pareil.

Ce problème fait suite à un upgrade de mysql.

Merci,

A. Valmer
ajh-valmer (03/02/2020, 22h10)
On Monday 03 February 2020 19:16:54 G2PC wrote:
> >> Et si tu fais une requête de sélection avec le terminal,
> >> ça retourne quoi comme réponse ? :

> > 2020 : 20? alors qu'avec phpmyadmin = 2020 : 20¤


> Étrange, PhpMyAdmin devrait prendre en charge UTF-8.
> Et ta page web elle affiche le même symbole, et, elle est en UTF-8 ?


Si je mets UTF-8, j'ai "2020 : 20?"

Sinon, ma page est en iso-8859-15.
[..]
ajh.valmer (04/02/2020, 18h40)
On Tuesday 04 February 2020 05:34:20 G2PC wrote:
> D'après ce que tu écris, PHPMyAdmin retournerait le symbole en tant que
> ISO 8859-1 ? [..]


Page Web de mon site, code PHP :
echo mb_internal_encoding();
UTF-8

Merci pour tous ces commentaires + liens.

Avant "€" m'affichait bien ?
Pourquoi plus maintenant ?

J'ai bien essayé :
Si UTF-8 = "?"
Si ISO 8859-1(5)= "¤".

Et pourquoi si champ phpmyadmin = 30¤ (et pas €)
mon site affiche correctement 30 ? ?
Et mysql en mode console, champ = 30 ?

Lorsque je fais un update ou insert sql,
cotisation='30 €' qui devient sous phpmyadmin : 30¤

Serait-ce phpmyadmin ?

Bonne soirée,
[..]
G2PC (04/02/2020, 19h00)
> Page Web de mon site, code PHP : [..]
> Et pourquoi si champ phpmyadmin = 30¤ (et pas €)
> mon site affiche correctement 30 ? ?
> Et mysql en mode console, champ = 30 ?
> Lorsque je fais un update ou insert sql,
> cotisation='30 €' qui devient sous phpmyadmin : 30¤
> Serait-ce phpmyadmin ?
> Bonne soirée,


Tu as omis de vérifier la structure de ta base de données, tu peux faire
un export de la structure ?
De la table concernée au moins ?
Vérifie l'encodage de la table et de la colonne, ça donne quoi ?
Erwann Le Bras (09/02/2020, 12h10)
Ohhh!

on ne mets jamais l'unité dans une base de données...
on inscrit simplement les montants en base, c'est à la présentation des
données qu'on rajoute l'unité, ce qui permet de les manipuler comme on veut.

Erwann

Le 03/02/2020 à 13:28, ajh-valmer a écrit :
[..]
Jean-Michel OLTRA (09/02/2020, 13h50)
Bonjour,

Le dimanche 09 février 2020, Erwann Le Bras a écrit...

> on ne mets jamais l'unité dans une base de données...
> on inscrit simplement les montants en base, c'est à la présentation des
> données qu'on rajoute l'unité, ce qui permet de les manipuler comme on veut.


Tu peux la mettre dans une colonne à part, ou via un id dans une table
séparée. C'est quand même préférable de savoir dans quelle unité fut
enregistré ledit montant.
Erwann Le Bras (Hier, 11h50)
Le 09/02/2020 à 12:32, Jean-Michel OLTRA a écrit :
> Bonjour,
> Tu peux la mettre dans une colonne à part, ou via un id dans une table
> séparée. C'est quand même préférable de savoir dans quelle unité fut
> enregistré ledit montant. Tout-a-fait.


Il y a même deux écoles : soit tout est renseigné dans la même monnaie
dans la base et converti à l'utilisation, soit la devise est précisée
avec le montant. Dans ce cas on préfère utiliser le code ISO 4217 de la
monnaie (EUR pour Euro, USD pour Dollar US) plutôt qu'un code de
caractère (?, $) qui va varier selon l'encodage retenu.

Codes ISO 4217 : [..],
[..]

cordialement
ajh-valmer (Hier, 12h20)
> Le 09/02/2020 à 12:32, Jean-Michel OLTRA a écrit :
> >> on ne mets jamais l'unité dans une base de données...
> >> on inscrit simplement les montants en base, c'est à la présentation des
> >> données qu'on rajoute l'unité, ce qui permet de les manipuler comme on
> >> veut.

> > Tu peux la mettre dans une colonne à part, ou via un id dans une table
> > séparée. C'est quand même préférable de savoirdans quelle unité fut
> > enregistré ledit montant.


On Monday 24 February 2020 10:45:32 Erwann Le Bras wrote:
> Tout-a-fait.
> Il y a même deux écoles : soit tout est renseigné dans la même monnaie
> dans la base et converti à l'utilisation, soit la devise est précisée
> avec le montant. Dans ce cas on préfère utiliser le code ISO 4217 de la
> monnaie (EUR pour Euro, USD pour Dollar US) plutôt qu'un code de
> caractère (?, $) qui va varier selon l'encodage retenu.
> Codes ISO 4217 : [..],
> [..]


C'est un champ qui n'a pas à être manipulé,
de type caractères "varchar", contenant un nombre, suivis d'un espace
et de € (soit p. ex. "20 €").
C'est lors de l'update du champ que les caractères €
se transforment en ce caractère : ¤ et pourquoi ?
Ce n'est pas un champ de type "INT" (integer, entier).

La table comporte un autre champ "montant" qui ne contient
qu'un nombre INT (p. ex. "20"), pour les manipulations (calculs).

Bonne journée.
Erwann Le Bras (Hier, 15h10)
Le 24/02/2020 à 11:18, ajh-valmer a écrit :
> On Monday 24 February 2020 10:45:32 Erwann Le Bras wrote:
> C'est un champ qui n'a pas à être manipulé,
> de type caractères "varchar", contenant un nombre, suivis d'un espace
> et de € (soit p. ex. "20 €").
> C'est lors de l'update du champ que les caractères €
> se transforment en ce caractère : ¤ et pourquoi ?
> Ce n'est pas un champ de type "INT" (integer, entier).
> La table comporte un autre champ "montant" qui ne contient
> qu'un nombre INT (p. ex. "20"), pour les manipulations (calculs).
> Bonne journée.


Je pense sérieusement pour un problème d'encodage.

Mais je pense qu'à la base il ya un problème de définition du shéma de
la base :
d'après ce que j'ai compris, il y a une table avec un montant au format
"varchar" et le même montant au format "int"
il n'est pas bon d'avoir deux fois la même info stockée en base, l'info
pouvant se désynchroniser entre les deux champs.
Discussions similaires
Symbole Euro

Le symbole Euro

symbole euro

Symbole Euro: IE5 / IE6


Fuseau horaire GMT +2. Il est actuellement 14h45. | Privacy Policy