Affichage décimales dans un formulaire

evenrude Messages postés 14 Statut Membre -  
evenrude Messages postés 14 Statut Membre -
Bonjour,
J'ai créé un formulaire "bon de commande" avec prix HT, TVA et TTC, qui a l'air de fonctionner. On peut le voir à l'adresse : "http://www.maulegourmandise.fr/BDC.html".
Il s'agit d'un site joomla chez ovh.
Malheureusement, les nombres avec décimales s'affichent avec un point, et parfois avec un seul chiffre après la virgule quand il y a un zéro après, alors que j'aimerais que le format soit :"#,00#
J'ai tout essayé, le setlocale, des scripts de conversion, mais rien ne change.
Est-ce que quelqu'un aurait la gentillesse de me dire ce que j'ai fait de faux ? ou ce que j'ai oublié d'ajouter ?
Merci d'avance et bonne journée à tous les forumeux !

4 réponses

Alain_42 Messages postés 5413 Statut Membre 894
 
en php il y a une fonction number_format(.....)
0
evenrude Messages postés 14 Statut Membre 2
 
Bonjour Alain_42,

J'ai vu cette fonction et je l'ai essayée, mais ça ne marche pas. A moins que je n'aie pas su l'implémenter. J'ai utilisé des math.round, du set locale, du number_format, des replace (point par virgule), mais comme je ne connais pas grand chose en php, je n'ai pas obtenu le résultat souhaité. Est-ce qu'éventuellement, à l'examen du code source, tu pourrais me dire où et comment je dois utiliser le number_format ? Merci d'avance et bon weekend
0
Alain_42 Messages postés 5413 Statut Membre 894
 
un petit bout d'exemple

<?php
$nombre=1589.526;
echo 'Nombre non formate ='.$nombre;
$nombre_formate=number_format($nombre,2,',',' '); // le nombre, nbr dec après la virgule (2), sep decimal (,) , separateur miliers (espace)
//attention il faut qu'il y ait 2 ou 4 arguments mais pas 3
echo '<br />Nombre formate ='.$nombre_formate;

?>
0
evenrude Messages postés 14 Statut Membre 2
 
Bonsoir,
Merci encore pour cette explication, malheureusement ça ne change rien à mon affichage. Au cas où j'ai essayé avec le replace("." , "," , $chaine) mais ça non plus ne change rien. Je n'y comprends plus rien. Voilà à quoi ressemble mes calculs :

for (var i=0; i<Nb_articles; i++) {

eval ('prix_i = document.Commande.prix'+i+'.value');
Total += Math.round(eval(prix_i)*100) / 100;

eval ('vtaxes_i= document.Commande.ttc'+i+'.value-document.Commande.prix'+i+'.value');
Total1 += Math.round(eval(vtaxes_i)*100) / 100;

eval ('ttc_i = document.Commande.ttc'+i+'.value');
Total2 += Math.round(eval(ttc_i)*100) / 100;

eval ('reduc_i = document.Commande.reduc'+i+'.value');
totreduc += Math.round(eval(reduc_i)*100) / 100;

}

Une autre suggestion si ce n'est pas trop demander ?
Merci et bon dimanche
0
Alain_42 Messages postés 5413 Statut Membre 894
 
J'avais compris que tu voulais ça en php, hors ton code c'est du javascript

alors tu dois trouver ton bonheur la:

http://www.javascriptfr.com
0
evenrude Messages postés 14 Statut Membre 2
 
Bonjour et merci pour ce commentaire. Ca montre mon ignorance !!! Mais entre-temps, ayant découvert que c'était du javascript, j'avais trouvé la fonction d'affichage de nombre dont tu parles et qui m'a bien servi. Je l'ai adapté à mon programme et ça donne :

function Virgule(valeur){
var valeur_str = valeur + '';
var valeur2 = valeur_str.replace(/\./,',');
var sch = valeur2.substring(valeur2.lastIndexOf(",")+1);
var len = sch.length;
var i = 0;
var decimales = 2
if (valeur2.indexOf(',') == -1) { // il n'y a pas de virgule ni de décimales
return valeur2+',00';
} else {
switch (len){
case 2: // une virgule et 2 décimales -> on ne fait rien car le point a été remplacé par un virgule
return valeur2;
break;
case 1: // une virgule et 1 décimale -> on rajoute un zéro
return valeur2+'0';
break;
default: // tous les cas à + de 2 décimales -> on tronque à 2 décimales
sch=valeur2.substring(0,valeur2.length-(len-2));
return sch;
break;
}
}
}

Comme quoi, grâce aux forums, on arrive à avancer, lentement mais surement. Merci encore
0