Page 1 sur 1

Problème de chiffre...

Posté : 12 févr. 2007, 20:36
par Invité
Bonsoir,

j'utilise ceci :
$mavar = number_format($mavar)
et mon problème du faite que lorsque je demande une comparaison avec la fonction if du genre :
if ($mavar>=100) { echo'commande possible'; }
!

Donc,le membre a 1000 points de dispo sur son compte et il peut commander a partir de 100 points !

Hors, avec Number format, c'est " 1,000 " et je ne peut pas passer la commande car je n'ai pas les 100 points minimum requis alors que j'ai 1000 points !

Le problème se situe donc avec number_format et sa virgule !

comment puis-je faire ?

merci !

Pour info, le champ dans ma base est de type varchar (25) !

Posté : 12 févr. 2007, 21:51
par Ajoloca
Bonjour,

Et en mettant les deux cotés "à même sauce"?
if ($mavar>=number_format(100)) { echo'commande possible'; } 

Posté : 12 févr. 2007, 21:57
par zeus
number_format() n'étant utile uniquement pour un affichage, je te conseillerais de ne pas faire
$mavar = number_format($mavar);
comme ça, tu dispose d'un entier normal que tu ne formates qu'a l'affichage

exemple :
if ($mavar>=100) 
{ 
  echo 'vous disposez de : '.number_format($mavar).' points. la commande est possible'; 
}
Ou si tu veux absolument le convertir avant, utilise 2 variables :
$ma_var_formated = number_format($mavar);

if ($mavar>=100) 
{ 
  echo 'vous disposez de : '.$mavar_formated.' points. la commande est possible'; 
}

ze solution

Posté : 13 févr. 2007, 10:51
par toto37
test directement $myvar.

ne la transforme pas avec number format avant ton test, le formatage "dénature" la variable, cela m'est arrivé il y a quelques jours , je ne comprenais pas pourquoi lors d'une multiplication le résultat était faux si tu formate ainsi

Code : Tout sélectionner

1 000
si tu fait des test ou des opérations, php crois que ta variable est égale à 1.

Surprenant mais bon c'est comme ça.......

number_format doit être utilisé uniquement pour de l'affichage, en aucun cas tu doit retravailler avec ta variable après.

Re: ze solution

Posté : 13 févr. 2007, 15:22
par zeus
si tu formate ainsi

Code : Tout sélectionner

1 000
si tu fait des test ou des opérations, php crois que ta variable est égale à 1.

Surprenant mais bon c'est comme ça.......
Ce n'est pas surprenant ...
PHP, faiblement casté, ne vérifie pas si l'argument passé pour une multiplication est numérique ou pas.
Lors de la récupération du contenu de la variable, le moteur tente de prendre la partie la plus entière, c'est à dire tant qu'il trouve des caractères numérique ou un "."

Dans le cas de "1 000", il trouve "1" puis un espace. La partie entière de "1 000" est donc "1" ;)

ze solution

Posté : 13 févr. 2007, 15:34
par toto37
ca l'est quand té pas au courant.......

Posté : 13 févr. 2007, 22:50
par zeus
Je n'ai pas dit le contraire ;)

C'est justement le but de ma précision : expliquer ce fonctionnement.

Ce n'est pas parce que quelqu'un fait une remarque qu'il faut mal le prendre :?
Je trouve que toute remarque est constructive ;)