Probleme pour faire afficher les nombre avec séparateur

Fermé
bibosn Messages postés 4 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 13 octobre 2012 - 13 oct. 2012 à 15:04
bibosn Messages postés 4 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 13 octobre 2012 - 13 oct. 2012 à 22:02
Bonjour,

j'ai une application avec une fonction php d'affichage du nombre avec séparateur de milliers.
par exemple; si on met 1000 on obtient 1 000 et ça s'affiche normalement jusqu'à un chiffre sous le format par exemple 9 500 000. Par contre si on met un montant à supérieur à 10 000 000 donc sous le format XX XXX XXXX le montant ne s'affiche pas sur mon site.
Ci-après la fonction utilisé
public function formaterPrix($prix){


if ($prix == null || empty($prix) || !$prix || $prix <= 0) {
return "Néant";
}
else if($prix > 0 && $prix <= 999)
{
return $prix." F";
}
else if($prix > 999 && $prix <= 9999)
{
return substr($prix, 0, 1).".".substr($prix, 1)." F ";
}
else if($prix > 9999 && $prix <= 99999)
{
return substr($prix, 0, 2).".".substr($prix, 2)." F";
}
else if($prix > 99999 && $prix <= 999999)
{
return substr($prix, 0, 3).".".substr($prix, 3)." F ";
}
else if($prix > 999999 && $prix <= 9999999)
{
return substr($prix, 0, 1).".".substr($prix, 1, 3).".".substr($prix, 4)."F ";
}

Merci pour votre aide

A voir également:

5 réponses

Et ba oui, ta fonction n'est pas appliquée tout le temps. En fait, il faut qqc de récursif, qui s'applique pour n'importe quel chiffre, et très court en plus :

function formaterPrix($prix){ 
 $Séparateur="."; 
 return strrev(preg_replace("#([0-9]{3})#","$1".$Séparateur,strrev("$prix"))); 
}


Explications
1. On retourne le nombre, les unitées apparaissent donc à gauche (strrev)
2. Tout les 3 chiffres, on rajoute le séparateur (preg_replace)
3. On ré-inverse le nombre

Et là y a les séparations
0
bibosn Messages postés 4 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 13 octobre 2012
13 oct. 2012 à 20:25
bonjour,

j'ai essayé de mettre votre solution mais tout ce qui s'afficher normalement est maintenant KO...par exemple si on met le montant 225000 on obtient à l'affichage .225.000 donc il y a un point(.) devant le chiffre alors que l'on devait avoir 225.000 merci de revoir votre formule afin que puisse obtenir:
-pour 1000 ------->1.000
pour 10000------->10.000
pour 100000------>100.000
pour 1000000------>1.000.000
pour 10000000------->10.000.000
pour 100000000------>100.000.00

Merci du feedback
0
Utilisateur anonyme
13 oct. 2012 à 21:16
Evidemment, pardon, j'avais testé avec des espaces, donc impossible de le voir ! et bien voila :
function formaterPrix($prix){ 
 $Separateur="."; 
 return strrev(preg_replace("#([0-9]{3})([0-9])#","$1$Separateur$2",strrev("$prix"))); 
}
0
bibosn Messages postés 4 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 13 octobre 2012
13 oct. 2012 à 21:27
merci pour le retour par ailleurs j'ai retesté mais je constate que pour les montants sous le format 10000000 à l'affichage on a 1.0000.000 alors que nous devrions avoir 10.000.000 et aussi pour les montants qui sont nuls c'est à dire 0, rien ne s'affiche alors que nous devrions avoir "néant"
Merci
0
Utilisateur anonyme
13 oct. 2012 à 21:50
Il n'est pas interdit de modifier le code XD !
Tenez, donc la fonction déjà inclue dans PHP :

function formatPrix($Prix)
$Separateur=".";
return number_format($Prix,0,",",$Separateur);
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bibosn Messages postés 4 Date d'inscription samedi 13 octobre 2012 Statut Membre Dernière intervention 13 octobre 2012
13 oct. 2012 à 22:02
cette dernière fonction ne fonctionne pas car il m'affiche 0 au niveau des prix alors qu'on renseigne bien un montant...pour précision c'est un site de vente en ligne et ce sont les internautes qui mettent prix de vente de la marchandise...la précédente fonction avait presque résolu le pb...il faudrait juste voir comment afficher 10.000.000 au lieu 1.0000.000
Merci encore une fois pour l'aide
0