Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2011, 13h55   #1
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
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.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 14h53   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
si tu cherches l'équivalent de number_format() en javascript, j'ai vu ca ici (testé) :
Code :
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 :
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 :
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;
}
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 18h20   #3
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
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 :
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 :
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.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 23h41   #4
Modérateur
 
Avatar de Vil'Coyote
 
Développeur Web
Inscription : février 2008
Messages : 3 303
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2008
Messages : 3 303
Points : 4 481
Points : 4 481
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.
Vil'Coyote est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 09h16   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
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 ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 13h23   #6
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Bonjour,

ça marche

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

Cordialement.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h56.


 
 
 
 
Partenaires

Hébergement Web