Problème de chiffre...

Invité
Invité n'ayant pas de compte PHPfrance

12 févr. 2007, 20:36

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) !

ViPHP
ViPHP | 1961 Messages

12 févr. 2007, 21:51

Bonjour,

Et en mettant les deux cotés "à même sauce"?
if ($mavar>=number_format(100)) { echo'commande possible'; } 
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

12 févr. 2007, 21:57

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'; 
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 164 Messages

13 févr. 2007, 10:51

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 févr. 2007, 15:22

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" ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 164 Messages

13 févr. 2007, 15:34

ca l'est quand té pas au courant.......

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 févr. 2007, 22:50

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer