Nombre En Lettres - Probleme avec 88 ! -

Résolu
marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007 - 4 juil. 2007 à 21:18
arshycon Messages postés 7 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007 - 18 juil. 2007 à 10:09
Bonjour,

J’ai un problème au niveau des chiffre 88 tous marche bien sauf quand il y a 88

Pouvez vous m’aidez SVP

<?php

function sommeEnLettres($nombre,$devise)

{

//On cr?e un tableau avec les unit?s

$unitesExp3 = array(

0 => 'euro',

3 => 'mille',

6 => 'million',

9 => 'milliard',

12 => 'billion',

15 => 'billiard',

18 => 'trillion',

21 => 'trilliard',

24 => 'quatrillion',

27 => 'quatrilliard',

30 => 'quintillion',

33 => 'quintilliard',

36 => 'sextillion',

39 => 'sextilliard',

);
if($devise "USD") $unitesExp3[0] "dollar";
if($devise "EUR") $sousUnite "centime"; elseif($devise == "USD") $sousUnite = "cent";

//On cr?e un tableau avec les 99 (100 avec zero) premiers nombres

$nombres_99 =
array("z?ro","un","deux","trois","quatre","cinq","six","sept","huit","neuf","dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf","vingt");

$nombres_99[30] = "trente";

$nombres_99[40] = "quarante";

$nombres_99[50] = "cinquante";

$nombres_99[60] = "soixante";

$nombres_99[70] = "soixante-dix";

$nombres_99[71] = "soixante et onze";

$nombres_99[80] = "quatre-vingt";

for ($i=21;$i<=61;$i+=10)

{

$nombres_99[$i] = $nombres_99[$i - 1]." et un";

for ($j=1;$j<=8;$j++)

{

$k = $i + $j;

$nombres_99[$k] = $nombres_99[$i - 1]."-".$nombres_99[$j + 1];

}

}

for ($i=72;$i<=79;$i++)

{

$nombres_99[$i] = "soixante-".$nombres_99[$i-60];

}

for ($i=81;$i<=99;$i++) {

$nombres_99[$i] = "quatre-vingt-".$nombres_99[$i-80];

$i++;

}

//On d?finit $r qui est le $nombre ?crit en lettres

$r="";

//on recherche si ya une virgule

$virg = strpos($nombre,",",1);

//puis on cr?e un tableau avec la partie enti?re et la partie apr?s la virgule

if ($virg == 0) {

$partie[0] = $nombre;

$partie[1] = "00";

}

else

{

$partie = explode(",",$nombre);

}

//on regarde combien ya de chiffres dans chaque partie

$nombreChiffres = strlen($partie[0]);

//on fait en sorte qu'il y a un nombre de chiffres qui tombe sur un multiple de 3 pour les calculs
if($nombreChiffres % 3 1) {$partie[0] "00".$partie[0]; $nombreChiffres += 2;}
elseif($nombreChiffres % 3 2) {$partie[0] "0".$partie[0]; $nombreChiffres += 1;}

$i = $nombreChiffres;

while ($i>0)

{

$centaines = substr($partie[0],$nombreChiffres-$i,1);

$dizainesEtUnites = substr($partie[0],$nombreChiffres-$i+1,2);

if (substr($partie[0],$nombreChiffres-$i+1,1)==0){ $dizainesEtUnites = substr($partie[0],$nombreChiffres-$i+2,1);}

if ($dizainesEtUnites==0 && $centaines > 1)

{

$r = $r.$nombres_99[$centaines]." cent"; if ($i != 6) $r = $r."s "; else $r = $r." ";

}

else

{
if ($centaines 1) $r $r."cent ";

else

{

if ($centaines > 1) $r = $r.$nombres_99[$centaines]." cent ";

}

}

if ($dizainesEtUnites == 80 && $i != 6)

{

$r = $r.$nombres_99[$dizainesEtUnites]."s ".$unitesExp3[$i-3]."s ";

}

elseif ($dizainesEtUnites > 1)

{

$r = $r.$nombres_99[$dizainesEtUnites]." ".$unitesExp3[$i-3]; if ($i != 6) $r = $r."s "; else $r = $r." ";

}

elseif($dizainesEtUnites == 1)

{

if ($centaines > 0)

{

$r = $r.$nombres_99[$dizainesEtUnites]." ".$unitesExp3[$i-3]; if ($i != 6) $r = $r."s "; else $r = $r." ";

}

elseif ($i == 3)

{
$r $r.$nombres_99[$dizainesEtUnites]." ".$unitesExp3[$i-3]; if ($partie[0] > 1) $r $r."s";

}

else

{

$r = $r.$unitesExp3[$i-3]." ";

}

}

elseif ($dizainesEtUnites == 0 && $centaines > 0)

{

$r = $r.$unitesExp3[$i-3]; if ($i != 6) $r = $r."s "; else $r = $r." ";

}
elseif ($i >6 && substr($partie[0],$nombreChiffres-$i,$i) 0)

{

$r = $r."d'".$unitesExp3[0]."s";

break;

}
elseif ($nombreChiffres-$i 3 && substr($partie[0],$nombreChiffres-$i,$i) 0)

{

$r = $r.$unitesExp3[0]."s";

break;

}

$i -= 3;

}

if ($partie[0] == 0) $r = $nombres_99[0]." ".$unitesExp3[0];

//on passe aux centimes

$centimes = substr($partie[1],0,2);

if (substr($partie[1],0,1)==0){ $centimes = substr($partie[1],1,1);}

if ($centimes != 0)

{

$r = $r." et ";

if ($centimes == 80)

{

$r = $r.$nombres_99[$centimes]."s ".$sousUnite."s";

}

elseif ($centimes > 1)

{

$r = $r.$nombres_99[$centimes]." ".$sousUnite."s";

}

elseif($centimes == 1)

{

$r = $r.$nombres_99[$centimes]." ".$sousUnite;

}

}

//on supprime les espaces de d?but et de fin

$r1 = trim($r);

return($r);

}

echo '__ICI C\'EST BON__ ' .$totalEnLettres = sommeEnLettres(number_format('8887.87', 10, ',', ''),EUR);

?>



<?

echo '__MAIS LA PROBLEME AVEC 88__ ' .$totalEnLettres = sommeEnLettres(number_format('8888.88', 10, ',', ''),EUR);

?>

3 réponses

marc660 Messages postés 171 Date d'inscription jeudi 15 avril 2004 Statut Membre Dernière intervention 18 juillet 2007
4 juil. 2007 à 22:30
Bonjour,



 





Je vous remercie mais c'est bon j'ai rsolu le probleme.





 




Merci encore
3
cs_vinz78 Messages postés 207 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 24 juillet 2007
18 juil. 2007 à 09:50
Le mieux sa serait de mettre comment....
0
arshycon Messages postés 7 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 10:09
Bonjour je suis intéressé par la façon dont vous avez résolu ce problème car j'ai le même merci de me l'indiquer
0
Rejoignez-nous