Page 1 sur 1

Type numérique avec virgule

Posté : 25 mars 2005, 17:49
par lulumOriss
Bonjour à tous,

J'enregistre dans ma base mySQL, un prix qui peut être avec 2 chiffres après la virgule.
La colonne est de type FLOAT, or il n'enregistre que les entiers avant la virgule, pas le reste.

ex : 12,50 devient 12,00

Faut-il convertir ma variable avant l'enregistrement ?

Merci de vos réponses. lulu.

Posté : 25 mars 2005, 20:45
par eSp
Salut,

Utilises plutôt le type DECIMAL .... Et n'oublie pas de spécifier la précision et l'echelle (cf. la doc).

++

Posté : 25 mars 2005, 20:53
par Xenon_54
C'est avec un point, pas une virgule.

Posté : 25 mars 2005, 21:03
par eSp
Ah oui désolé je n'avais vu qu'il voulait une virgule ! Donc dans ce cas, il faut garder le type FLOAT et il faut faire les même précisions que pour le type DECIMAL...

Je cite la doc:
Une syntaxe alternative existe aussi, elle utilise deux paramètre optionnel après le mot clé FLOAT. Avec cette option, le premier nombre représente toujours la taille de stockage nécessaire pour la valeur, et le second nombre représente le nombre de chiffres à stocker et afficher, après la virgule décimale (comme pour les types DECIMAL et NUMERIC). Lorsque MySQL stocke un nombre pour une telle colonne, et que cette valeur a plus de décimale que requis, la valeur est arrondie pour éliminer les chiffres surnuméraires.
Par ailleurs, j'étais parti sur le type DECIMAL car en navigant dans la doc je suis tombé sur ceci:
La représentation des valeurs monétaires est un problème commun. Avec MySQL, vous devrez utiliser le type DECIMAL.
@++ :wink:

Posté : 25 mars 2005, 21:10
par Xenon_54
J'ai dit que le mec devrait utiliser le point et non la virgule s'il veut que sa valeur ne soit pas tronquée lors de l'insertion.

Posté : 26 mars 2005, 14:30
par lulumOriss
Merci pour vos réponses, le mec va essayer avec un point.
Sinon, je me pencherai sur DECIMAL, ma première option qui, je le pensais, n'était pas appropriée.

lulu.

Posté : 29 mars 2005, 11:58
par Invité
C'est résolu :

J'ai passé la colonne en DECIMAL et je convertis mon prix avant l'enregistrement en remplaçant la virgule par un point.

ça donne :
$prix = preg_replace('/,/','.', $prix);
Merci de votre aide.