Création formulaire avec calculs

cs_orelien Messages postés 137 Date d'inscription dimanche 7 juillet 2002 Statut Membre Dernière intervention 11 janvier 2009 - 7 oct. 2004 à 10:37
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 11 oct. 2004 à 12:53
Bonjour,

j'ai un formulaire de plusieurs lignes contenant chacune 4 éléments :
Libélle - prix - quantité - total

En fin de page : un champ total global.

Seul la quantité peut changer.

J'aimerais que lors de la saisie de la quantité, le total de la ligne se mette à jour automatiquement et que le total de la page se calcul aussi.

Quelqu'un peut-il m'aider ?
Merci

Orélien.

10 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 oct. 2004 à 13:28
Bonjour,
on peut faire ça de 10000 manières différentes,
un ch'tit exemple "tout simple" ?
<code>
<HTML>
<HEAD>
<TITLE></TITLE>
<script type= "text/javascript">
function calcul(ind)
{res[ind].value=Number(pri[ind].value)*Number(qte[ind].value);
total.value=0;
for (var n=0;n<res.length;n++)
{ total.value=Number(total.value)+Number(res[n].value); } }
</script>
</HEAD>

article |prix |Qté | = |
----
un
</HTML>

les calculs sont lancés dès que l'on
"quitte" les champs "qté".
il faudrait contrôler les qtés entrées,
gérer correctement les arrondis ...
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
0
cs_orelien Messages postés 137 Date d'inscription dimanche 7 juillet 2002 Statut Membre Dernière intervention 11 janvier 2009
7 oct. 2004 à 20:14
Merci beaucoup !

Une autre question: est-il possible de n'avoir que la zone "quantité" de modifiable par l'utilisateur et que les autres zones soient affichées sous forme de texte uniquement ?

Si non est-il possible de bloquer la saisie de la zone "prix" par exemple ?

Merci

Orélien.
0
cs_orelien Messages postés 137 Date d'inscription dimanche 7 juillet 2002 Statut Membre Dernière intervention 11 janvier 2009
7 oct. 2004 à 22:54
Salut,

J'avais mal vu, c'est ok pour bloquer les zones.

Je voulais savoir comment combiner tout ça à un formulaire afin de l'envoyer par mail en php ?
Si je place tout ces éléments dans une balise "FORM" cela ne fonctionne plus...

Quelqu'un as t'il une solution ?

Merci.

Orélien.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
8 oct. 2004 à 09:33
tous les noms utilisés ( qte,pri,res...) doivent
être préfixés avec le name de la form
<form name="frm".... par exemple, donc
frm.res[n].value, frm.qte[n]....
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_orelien Messages postés 137 Date d'inscription dimanche 7 juillet 2002 Statut Membre Dernière intervention 11 janvier 2009
8 oct. 2004 à 23:21
Merci !

Maintenant avec tout ça je n'arrive plus à récupérertoutes les données du formulaire dans un fichier php.

Aurais-tu une solution ?

Merci beaucoup...

Orélien.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 oct. 2004 à 08:46
[ table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0 tr td class=code br < form name= frm br action= programme.php br method= post ....> br ici les lignes ... avec les noms des br champs de la forme qte[] , pri[] ... br qu il faut gérer en avec br la syntaxe : document.frm[ qte[] table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0 tr td class=code br < form name= frm br action= programme.php br method= post ....> br ici les lignes ... avec les noms des br champs de la forme qte[] , pri[] ... br qu il faut gérer en avec br la syntaxe : document.frm[ qte[]][n]
et soit

soit
en javascript faire frm.submit()
le php gérant ces données avec
$_POST["qteSite] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 oct. 2004 à 08:49
comme parfois, le message
s'affiche mal ....

<form name="frm"
action="programme.php"
method="post"....>

ici les lignes ... avec les noms des
champs de la forme "qte[]","pri[]"...

</form>

qu'il faut gérer en javascript avec
la syntaxe : document.frm["qte[]"][n]

et soit

soit
en javascript faire frm.submit()

le php gérant ces données avec
$_POST["qte"][$numero]
0
cs_orelien Messages postés 137 Date d'inscription dimanche 7 juillet 2002 Statut Membre Dernière intervention 11 janvier 2009
10 oct. 2004 à 20:09
Salut,

Merci pour ton aide mais aurais-tu un exemple plus concret stp, ca je suis un peu perdu dans tout ça...

Merci

Orélien.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 oct. 2004 à 12:35
[voici pour l aspect : br table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0 tr td class=code br < HTML> br < HEAD> br < TITLE> < /TITLE> br < script type= text/ > br function calcul ind br {document.frm[ res[] voici pour l aspect : br table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0 tr td class=code br < HTML> br < HEAD> br < TITLE> < /TITLE> br < script type= text/ > br function calcul ind br {document.frm[ res[]][ind].value=
Number(document.frm["pri[]Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 oct. 2004 à 12:53
encore mal affiché ????
pour l'aspect javascript :

<HTML>
<HEAD>
<TITLE></TITLE>
<script type= "text/javascript">
function calcul(ind)
{document.frm["res[]"][ind].value=
Number(document.frm["pri[]"][ind].value) *
Number(document.frm["qte[]"][ind].value);
frm.total.value=0;
for (var n=0;n<document.frm["res[]"].length;n++)
{frm.total.value=Number(frm.total.value)+Number(document.frm["res[]"][n].value); } }
</script>
</HEAD>

<form name="frm"
action="programme.php"
method="post">
article |prix |Qté | = |
----
un,
,
,
,
----
deux,
,
,
,
----
trois,
,
,
,
----
Total |
,
,

</form>
</HTML>

l'appui sur le bouton "Envoyer" va transmettre
le formulaire à "programme.php" qui va traiter
$_POST["total"] et
les Arrays $_POST["pri"][n° ligne],
$_POST["qte"][n° ligne], $_POST["res"][n° ligne]
cordialement.
0
Rejoignez-nous