Formatage monétaire

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

30 avr. 2005, 23:50

Après les dates, le pognon ! :lol:

J'ai dans ma base MySQL, un champ prix de type Decimal(6,2) unsigned.

Je voudrais que :
17.00 :arrow: 17
17.50 :arrow: 17,50

Vous l'dites si j'suis compliqué, hein ? :wink:

ioup
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 00:08

salut ! tu voudrais ça à l'affichage sur ta page php ?

un str_replace() fonctionnerait pas ? :p

c'est juste une idée au passage :p

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 mai 2005, 00:19

C'est effectivement pour un affichage.

str_replace() ?...
Mais, évidemment !!! :shock:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 mai 2005, 00:28

C'est pas hyper élégant, mais ça marche.
function virgule($chaine)
{ $chaine = str_replace(".00", "", $chaine);
  $chaine = str_replace(".", ",", $chaine);
  return $chaine;
}
Au départ, j'avais pensé aux regexp.
D'où mon appel à l'aide... ;)

ioup
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 00:28

pas convaincu ? un probleme ?

ça donnerait ça par exemple :)
<?

$montant = "17.00";
$montant_sans_00 = str_replace('.00',' ',$montant);
echo "$montant_sans_00";

$montant = "17.50";
$montant_sans_point = str_replace('.',',',$montant);
echo "$montant_sans_point";

?>
bon courage !

ioup
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 00:29

c'est pas optimale je l'avoue mais bon :p ça fonctionne ! ^^

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 mai 2005, 00:39

Bien sûr, ça fonctionne.
Ton code est d'ailleurs quasi-identique au mien.
Mais je ne trouve pas ça optimale comme façon de faire.

Enfin, bon. À cette heure-ci, l'essentiel, c'est que ça marche ! :lol:

Encore merci et bonne nuit.

Eléphant du PHP | 139 Messages

01 mai 2005, 04:17

Enfin, bon. À cette heure-ci, l'essentiel, c'est que ça marche ! :lol:
Encore merci et bonne nuit.
Pendant que d'autre vont dormirent moi j'étudie :lol:
Au départ, j'avais pensé aux regexp.

par exemple, comme ceci :
echo preg_replace(array("(\.[0-9]$)","(\.)"),array("\${0}0",","), $nbr);
pour le fun, avec le symbole de l'euro.
echo preg_replace(array("(\.[0-9]$)","(\.)","($)"),array("\${0}0",","," €"), $nbr);
je tiens a remercier l'auteur de ces deux excellents tutoriaux, qui mon fait découvrir et apprendre ces petites bêtes que sont les expressions régulières. voila merci DAMIEN :wink:

Mammouth du PHP | 19672 Messages

01 mai 2005, 08:19

Tu as la fonction number_format() qui peut faire ça, les exemples du manuel :
<?php

$nombre = 1234.56;
// Notation anglaise (par défaut)
$english_format_number = number_format($nombre); // 1,234.56

// Notation française
$nombre_format_francais = number_format($nombre, 2, ',', ' ');
// 1 234,56

// Notation anglaise sans séparateurs des centaines
$english_format_number = number_format($number, 2, '.', '');
// 1234.57

?> 
J'ai utilisé ça il y a peu de temps, ça fonctionne plutôt bien :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 mai 2005, 10:17

Great, boys !

Merci :wink:

Mammouth du PHP | 19672 Messages

01 mai 2005, 10:23

Waow, j'ai participé à aider albat , j'y crois pas O:)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: