Page 1 sur 1
99.99 en valeur décimal ?!
Posté : 24 juin 2010, 11:54
par jp.bond
bonjour,
j'ai développé un site de gestion d'inscription avec de la vente en ligne, qui fonctionne depuis 5 ans maintenant sur la meme base.
mais je viens de m'apercevoir que certaines valeurs de la base de données avaient "changé" : je pense pouvoir dire que cette modification ne concernent que les valeurs à 3 chiffres (donc supérieur à 99) qui représente un prix de vente.
Ces valeurs sont déclarées en base de données MySQL comme des décimales de longueur (4,2).
On est bien d'accord que, du coup, ma valeur limite devrait etre 9999.99 non ?
Alors pourquoi les nombres à 2 chiffres dans ma base ne bougent pas (genre 40€) mais que les valeurs comme 128€ deviennent 99.99 ?
Je suis un peu perdu...merci de votre aide, ou d'une piste de réflexion...
Re: 99.99 en valeur décimal ?!
Posté : 24 juin 2010, 12:04
par macgawel
Ces valeurs sont déclarées en base de données MySQL comme des décimales de longueur (4,2).
On est bien d'accord que, du coup, ma valeur limite devrait etre 9999.99 non ?
Je dirais plutôt que (4,2) c'est 4 chiffres dont 2 après la virgule...
Re: 99.99 en valeur décimal ?!
Posté : 24 juin 2010, 12:14
par jp.bond
gloups...ca veut dire qu'il me faut (5,2) au minimum donc...
Re: 99.99 en valeur décimal ?!
Posté : 24 juin 2010, 12:30
par jp.bond
heu..non...ya quand meme un soucis...
je viens de regarder mes dumps du mois de mars et j'ai bien :
Code : Tout sélectionner
DROP TABLE IF EXISTS `2010_adherents`;
CREATE TABLE `2010_adherents` (
[...]
`cb` decimal(4,2) NOT NULL default '0.00',
`esp` decimal(4,2) NOT NULL default '0.00',
`virement` decimal(4,2) NOT NULL default '0.00',
`chq1` decimal(4,2) NOT NULL default '0.00',
`chq2` decimal(4,2) NOT NULL default '0.00',
`chq3` decimal(4,2) NOT NULL default '0.00',
[...]
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7345 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
et voila quelques lignes de données de cette table :
Code : Tout sélectionner
insert into `2010_adherents`([...],`cb`,`esp`,`virement`,`chq1`,`chq2`,`chq3`,[...]) values
([...],0.00,0.00,0.00,128.00,0.00,0.00,[...]),
([...],279.00,0.00,0.00,0.00,0.00,0.00,[...]),
([...],128.00,0.00,0.00,0.00,0.00,0.00,[...]),
([...],0.00,0.00,0.00,128.00,0.00,0.00,[...]),
([...],128.00,0.00,0.00,0.00,0.00,0.00,[...])
j'avais donc bien des valeurs décimals (4,2) avec des prix comme 128.00 ou 279.00
je ne comprends donc pas pourquoi, d'un coup, je me retrouve avec 99.99 à la place !
Re: 99.99 en valeur décimal ?!
Posté : 25 juin 2010, 08:37
par macgawel
et voila quelques lignes de données de cette table :
Code : Tout sélectionner
insert into `2010_adherents`([...],`cb`,`esp`,`virement`,`chq1`,`chq2`,`chq3`,[...]) values
([...],0.00,0.00,0.00,128.00,0.00,0.00,[...]),
([...],279.00,0.00,0.00,0.00,0.00,0.00,[...]),
([...],128.00,0.00,0.00,0.00,0.00,0.00,[...]),
([...],0.00,0.00,0.00,128.00,0.00,0.00,[...]),
([...],128.00,0.00,0.00,0.00,0.00,0.00,[...])
j'avais donc bien des valeurs décimals (4,2) avec des prix comme 128.00 ou 279.00
je ne comprends donc pas pourquoi, d'un coup, je me retrouve avec 99.99 à la place !
Ce ne sont pas des données de la table, c'est ce que tu essaye d'insérer
Je viens de vérifier avec phpMyAdmin :
Warning: #1264 Out of range value for column 'cb' at row 1
Il ne s'agit que d'un Warning, et du coup l'INSERT fonctionne bien mais insère la valeur plafond
99.99 au lieu d'insérer
123.45.
Du point de vue PHP, comme ce n'est qu'un Warning et que l'INSERT a quand-même lieu, ça ne génére pas d'erreur...
De toute façon, à moins d'avoir vraiment une grosse table (ou d'avoir des valeurs bien précises), il vaut mieux se laisser une bonne marge.
Re: 99.99 en valeur décimal ?!
Posté : 25 juin 2010, 11:53
par jp.bond
ok oui je suis d'accord c'est ce que j'essaie d'inserer, mais c'est juste ce qui est issu d'un fichier de sauvegarde...donc cela veut dire qu'au moment où j'ai fait cette sauvegarde, ces infos etaient dans la base...ce qui prouve bien que malgré la limite 4,2 des valeurs comme 128.00 etaient enregistrées correctement...Et c'est d'ailleurs pour cela que tout semblait bon pour moi jusqu'à ce que...?
Vous pensez qu'une mise à jour de MySql chez l'hébergeur pourrait expliquer ce changement ? sinon je ne comprends pas pourquoi ces données ont subitement changé dans la base...
Re: 99.99 en valeur décimal ?!
Posté : 28 juin 2010, 11:35
par jp.bond
bonjour,
je reviens vers vous car personne n'a pu répondre à mes questions...
est-ce une question sans réponse ?
merci de votre aide...
Re: 99.99 en valeur décimal ?!
Posté : 28 juin 2010, 11:56
par stealth35
bonjour,
je reviens vers vous car personne n'a pu répondre à mes questions...
est-ce une question sans réponse ?
merci de votre aide...
normale t'as mis DECMIAL 4,2
donc 4 chiffres dont 2 apres la virgiule
le - comptant comme un caratere tu peux allé de -9,99 a 99,99
si tu veux allé plus loin fais 5,2 : mais ca ira de -99,99 a 999,99
utilise les FLOAT plutôt

Re: 99.99 en valeur décimal ?!
Posté : 29 juin 2010, 12:07
par jp.bond
salut Stealth35 et merci pour ta réponse mais ca ne répond pas à cette question :
Code : Tout sélectionner
au moment où j'ai fait cette sauvegarde, ces infos etaient dans la base...ce qui prouve bien que malgré la limite 4,2 des valeurs comme 128.00 etaient enregistrées correctement...Et c'est d'ailleurs pour cela que tout semblait bon pour moi jusqu'à ce que...?
Vous pensez qu'une mise à jour de MySql chez l'hébergeur pourrait expliquer ce changement ? sinon je ne comprends pas pourquoi ces données ont subitement changé dans la base...
Re: 99.99 en valeur décimal ?!
Posté : 01 juil. 2010, 17:31
par jp.bond
bon tant pis...
Re: 99.99 en valeur décimal ?!
Posté : 01 juil. 2010, 18:33
par stealth35
bon tant pis...
tu la changer en 5,2 ?
Re: 99.99 en valeur décimal ?!
Posté : 02 juil. 2010, 16:37
par jp.bond
le probleme n'est pas de le changer, le probleme c'est que j'ai perdu toutes les valeurs à 3 chiffres avant la virgule qu'il y avait avant à la place de 99.99 !
donc je voudrais comprendre POURQUOI...
Re: 99.99 en valeur décimal ?!
Posté : 03 juil. 2010, 13:32
par stealth35
le probleme n'est pas de le changer, le probleme c'est que j'ai perdu toutes les valeurs à 3 chiffres avant la virgule qu'il y avait avant à la place de 99.99 !
donc je voudrais comprendre POURQUOI...
ta fais des mise a jour de ton serveur ou de ton code ?
Re: 99.99 en valeur décimal ?!
Posté : 05 juil. 2010, 09:35
par jp.bond
je suis chez online.net donc je ne sais pas si une mise à jour a été faite du serveur...par contre je n'ai pas fait de mise à jour de mon code...