IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formatter à la siasie et l'annuler au moment de l'enregistrement ?


Sujet :

Langage PHP

  1. #1
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut Formatter à la siasie et l'annuler au moment de l'enregistrement ?
    Bonjour,

    je souhaite formater des champ de montant( séparer les millions au milliers ..ect ) au moment de la saisie .

    mais je dois enregistrer ces même champ dans la base dans une page PHP de traitement.

    je sais formater un champ à l’affichage par number_format() et ça marche.

    je demande comment annuler le formatage quand on enregistre la données ?

    Et c'est le même principe qu'on utilise pour formater la saisie que pour l'affichage ?

    merci de vos aides ?

    Cordialement.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    si tu cherches l'équivalent de number_format() en javascript, j'ai vu ca ici (testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function number_format( number, decimals, dec_point, thousands_sep ) {
        // http://kevin.vanzonneveld.net
        // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
        // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // +     bugfix by: Michael White (http://crestidg.com)
        // +     bugfix by: Benjamin Lupton
        // +     bugfix by: Allan Jensen (http://www.winternet.no)
        // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)    
        // *     example 1: number_format(1234.5678, 2, '.', '');
        // *     returns 1: 1234.57     
     
        var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
        var d = dec_point == undefined ? "," : dec_point;
        var t = thousands_sep == undefined ? "." : thousands_sep, s = n < 0 ? "-" : "";
        var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
     
        return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
    }
    Testé avec : 123456.79 -> format francais 123.456,79
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <html>
    <head>
        <title>test</title>
    	<script type="text/javascript">
    	function number_format( number, decimals, dec_point, thousands_sep ) {
    		var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    		var d = dec_point == undefined ? "," : dec_point;
    		var t = thousands_sep == undefined ? "." : thousands_sep, s = n < 0 ? "-" : "";
    		var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    		return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
    	};
    	</script>
    </head>
    <body>
     
    <form method="post" action="">
    	<input type="text" id="idnbformat" name="nbformat" value="" onchange="this.value=number_format( this.value, 2, ',', '.' );"/><!-- 123456.79 -> format francais 123.456,79 -->
    	<input id="idsendButton" name="sendButton" type="submit" value="envoi" />
    </form>
    </body>
    </html>
    Et enregistrement en BdD : format Francais -> BdD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php // traitement
    if(isset($_POST['sendButton'])) {
    	// recuperation au format francais 123.456,79
    	$french_format_number = $_POST['nbformat'];
    	// Notation anglaise sans séparateur des centaines => enregistrement en BdD
    	$bdd_format_number = str_replace(array('.',','), array('','.'), $french_format_number);
     
    	echo 'french_format_number = '.$french_format_number.'<br />';
    	echo 'bdd_format_number = '.$bdd_format_number;
    }
    ?>
    Dernière modification par Invité ; 08/08/2011 à 15h10.

  3. #3
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    Merci jreaux62 ça marche parfaitement.

    Toutefois, je dois formater 3 champs. mais je calcule les deux autres en fonction de l'autre champ(événement onkeyup). Mais quand j'attache la fonction de formatage aux deux autres champs, ça les formate pas.

    ici dans le champ montant_HT, j'ai deux événements onkeyup pour calculer automatiquement le TVA et le TTC et le onchange pour le formatage.
    les autres , je les formate après leur calcul(événement onchange seulement. Mais ça refuse de les formater. ça formate que le montant HT

    voici le code html des champs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <th>Montant imputation HT</th>
    <td><input  type="text" name="montant_HT"  value=""  onchange="this.value=number_format( this.value, 2, '.', ' ' );" ; onkeyup="calcul_mt_TTC();" /></td>
    </tr>
    <tr>
    <th>TVA imputation</th>
    <td><input  type="text" name="montant_TVA" id="montant_TVA"  onchange="this.value=number_format( this.value, 2, '.', ' ' );"   /></td>
    </tr>
    <tr>
    <th>Montant imputation TTC</th>
    <td><input type="text" name="montant_TTC" id="montant_TTC"  onchange="this.value=number_format( this.value, 2, '.', ' ' );" /></td>
    </tr>
    fonction du calcul TTC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function calcul_mt_TTC()
    {
    var montant_HT=Number(document.test.montant_HT.value); 
    //var montant_app=montant_HT*0.18;
    document.test.montant_TTC.value=(montant_HT)+((montant_HT*18)/100);
    document.test.montant_TVA.value=(montant_HT*18)/100;
    }
    Comment faire pour que ça formate les autres champs malgré leur événement onchange ?

    Merci des solutions.

  4. #4
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    pourquoi ne pas faire le formatage directement dans ta fonction calcule? cela évitera le onchange qui ne marche que si l'utilisateur saisie dans la zone.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Madina,
    ne te contente pas de copier-coller les codes qu'on écrit pour toi.

    Utilise ta tête pour réfléchir et tu trouveras sûrement des solutions.

    Vil'Coyote t'as mise sur la piste ...

  6. #6
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    Bonjour,

    ça marche

    C'est vrai c’était la solution de faire le formatage dans la fonction de calcul.
    Merci jreaux62 .

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Erreur au moment de l'enregistrement du fichier
    Par FXdeCadix dans le forum Excel
    Réponses: 7
    Dernier message: 06/09/2010, 17h18
  2. [AC-2003] Annuler ou Supprimer un nouvel enregistrement
    Par jax54000 dans le forum VBA Access
    Réponses: 7
    Dernier message: 11/04/2010, 19h02
  3. Annuler la sortie d'un enregistrement
    Par Gabout dans le forum IHM
    Réponses: 7
    Dernier message: 09/01/2008, 07h21
  4. Réponses: 1
    Dernier message: 19/12/2006, 09h13
  5. [MySQL] erreur au moment de l'enregistrement
    Par celine123 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/11/2006, 13h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo