Probleme pour faire afficher les nombre avec séparateur

bibosn Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
bibosn Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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

5 réponses

Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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