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 !
Configuration: Windows 7 / Firefox 3.5.8

4 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    en php il y a une fonction number_format(.....)
    0
    1. 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
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
    1. 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
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  4. 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