pb d'addition avec number_format - PHP - Programmation
Marsh Posté le 14-09-2004 à 17:16:50
Normal, les chaînes et les virgules ( pour la partie décimale ) sont assez mal digérés dans le monde numérique de PHP... il s'arrête donc dès qu'il rencontre l'un d'eux.
Solution :
$prix = float(ereg_replace(",", ".", ereg_replace(" ", "", $prix)));
$livraison = float(ereg_replace(",", ".", ereg_replace(" ", "", $livraison)));
$total = strval($prix + $livraison);
Tu peux même le faire en une seule ligne
$total = strval(float(ereg_replace(",", ".", ereg_replace(" ", "", $prix))) + float(ereg_replace(",", ".", ereg_replace(" ", "", $livraison))));
Marsh Posté le 15-09-2004 à 09:26:40
Il faut toujours garder la valeur numérique de tes prix et n'utiliser la fonction number_format que pour l'affichage.
Ces lignes là :
Code :
|
deviennent donc
Code :
|
Marsh Posté le 14-09-2004 à 11:28:00
salut a tous
G un pb avec avec une addition en utilisant la fonction number_format.
je vous explique :
il faut que j'additionne prix+livraison=total
voila ce qu'il se passe :
si prix =100,00
et que livraison=60,00
pas de probleme le total est bien egal a 160,00
mais si prix=200 000 000,00 (certes un peu cher!)
et que livraison=60,00
le total est alors egal a 200
OU
si prix=18 000,00
et que livraison=1 500,00
le total est alors egal a 19
et il affiche bien 19 et non pas 19.00
et il ne calcule que le dernier millieme
voila voila ...
[]code]
//affichage du prix /quantité
echo 'prix :'.number_format($article['prix']*$quantite,2, ',', ' ').'<br>';
//affichage du prix de la livraison
echo 'prix livraison:'.number_format($livraison, 2, ',', ' ').'<br>';
//total (prix total etant le produit de quantité et de prix)
$_SESSION['prix_general']=number_format($livraison+$_SESSION['prix_total'], 2, ',', ' ');
echo echo 'prix livraison:'.number_format($HTTP_SESSION_VARS['prix_general']).'';
[/code]
merci de votre aide
Message édité par attentio le 24-03-2005 à 21:15:55
---------------
L'ordinateur a de la mémoire mais aucun souvenir ...