Chargement en cours...
Connexion au forum informatique de Sur-la-Toile
La discussion « Calcul à l'intérieur d'un formulaire » se trouve dans le forum « Programmation »
Statut de la discussion » Calcul à l'intérieur d'un formulaire « ( résolue)

Calcul à l'intérieur d'un formulaire

» Liste des Forums » Programmation » Discussion

Le 16-10-2007 à 05:17 #

bonjour!

J'ai un problème avec mon formulaire, j'aimerais qu'il calcul la totalité des quantités mais malheureusement il calcul seulement la première ligne lorsque l'utilisateur la change, les autres lignes sont ignorées. voici mon script

<SCRIPT language="javascript" >
function calcul(){
var mardi = 0 + Number(document.getElementById("mid[]").value);
var jeudi = 0 + Number(document.getElementById("jid[]").value);

var total = Number(mardi + jeudi);
document.getElementById("total").value = total;
}
</SCRIPT>

voici un peu plus loin mes inputs provenant d'une requête sql (une boucle)

print '<tr><input type="hidden" "name="id[]" value='.$id.'><td><input type="text" name="prenom[]" value='.$prenom.' size="14"> <input type="text" name="nom[]" value='.$nom.' size="14"><td>'.$adresse.', '.$ville.'<td><center><input type="text" name="mardipopote[]" id="mid[]" value="'.$mardipopote.'" onChange="calcul()" size="3"><td><center><input type="text" name="jeudipopote[]" id="jid[]" value="'.$jeudipopote.'" size="3" onChange="calcul()" >';

Le 16-10-2007 à 17:32 #

Salut,

Si tu as plusieur lignes et que la page affiche donc plusieurs possibilité d'Input pour mardi et jeudi tu ne dois pas utiliser le document.getElementById mais plutôt le document.getElementsByName car celui ci va te retourner un tableau (Array) d'objets ayant "mardipopote" ou "mardipopote".

Exemple que j'ai piqué du Web parce que je suis paresseux :
<FORM name="form_fruit">
<INPUT type="checkbox" name="fruit" value="Fraise"> Fraise <BR>
<INPUT type="checkbox" name="fruit" value="Banane"> Banane <BR>
<INPUT type="checkbox" name="fruit" value="Pomme"> Pomme <BR>
</FORM>
<SCRIPT language=javascript>
document.getElementsByName("fruit")[0].checked = true;
document.getElementsByName("fruit")[1].checked = true;
document.getElementsByName("fruit")[2].checked = true;
</script>

NOTE : n'utilise pas des noms d'objet comme "mardipopote[]" avec les [] à la fin car tu vas en arracher... Prends juste "mardipopote" comme nom.

A+
jf





Ajout du 16-10-2007 à 17:38:

Je vais être gentils:

Si tu ne connaîs pas le nombre d'occurence de l'élément "mardi" voici comment l'obtenir :

var myMardiArray=document.getElementsByName("mardipopote");
alert("le nombre d'occurence est : " + myMardiArray.length);

A+

Le 16-10-2007 à 19:24 #

ok merci beaucoup je vais essayer ça immédiatement et je te reviens là-dessus.

à propos, les [] c'était pour faciliter mon $_POST["mardipopote[]"] sur la page de sortie de facture, le POST allait chercher toutes les données des mardipopote.

Le 16-10-2007 à 19:51 #

OK

$_POST["mardipopote[]

donc c'est du PHP. De ce coté là je ne peut pas t'aider. En js je m'y connais, ASP, Java et C mais en PHP j'ai jamais vraiment regardé.

Tu peux essayer de garder le nom avec les "[]" mais je ne sais pas comment le Javascript va interpréter qq chose comme :
document.getElementsByName("mardipopote[]")[0].value;

À première vue ça devrais fonctionner. C'est que je trouvais ça bizare

A+
jf



[ Ce message a été modifié par : : jft99 le 16-10-2007 19:53 ]

Le 16-10-2007 à 20:05 #

en conservant les [] ça semble fonctionner, l'alerte me dit que mon nombre d'occurence est 4, ce qui est exact.

donc je me suis servi de cette information pour la passer en boucle, mais pour la suite je fais comment, chu vraiment un gros 0 en JAVASCRIPT. Voilà à quoi ça ressemble mon code qui ne calcul plus rien maintenant :)

<SCRIPT language="javascript" >
function calcul(){
var myMardiArray=document.getElementsByName("mardipopote[]");
var myJeudiArray=document.getElementsByName("jeudipopote[]");

for (var i =0; i < myMardiArray.lenght, i++) {
var mardi=myMardiArray.value;
var mardi=myJeudiArray.value;

}


var total = 0 + Number(mardi + jeudi);
document.getElementById("total").value = total.toFixed(2);
}
</SCRIPT>

AUTRE CHOSE

lorsque j'Essais ceci

var myMardiArray=document.getElementsByName("mardipopote[]");
alert("le nombre d'occurence est : " + myMardiArray[2].value);

il me sort la donnée correspondante au bon array... mais lorsque j'essais ceci

for (var i =0; i < myMardiArray.lenght, i++) {
var mardi += myMardiArray[i].value;

}

ça ne fonctionne pas!! je croyais vraiment que je l'avais!!!

[ Ce message a été modifié par : : Foo le 16-10-2007 20:23 ]

Le 16-10-2007 à 20:18 #

Je ne testerai pas mais ça va être qq chose comme :

<SCRIPT language="javascript" >
function calcul(){
var myMardiArray=document.getElementsByName("mardipopote[]");
var myJeudiArray=document.getElementsByName("jeudipopote[]");

// ici tu déclare tes variable car tu ne peux les déclarer qu'une fois
var TotalMardi = 0;
var TotalJeudi = 0;

for (var i =0; i < myMardiArray.lenght, i++) {
TotalMardi = TotalMardi + myMardiArray[i].value;
TotalJeudi = TotalJeudi + myJeudiArray[i].value;
}

var total = TotalMardi + TotalJeudi ;
document.getElementById("total").value = total.toFixed(2);
}
</SCRIPT>


A+
jf



[ Ce message a été modifié par : : jft99 le 16-10-2007 20:20 ]

Le 16-10-2007 à 20:35 #

je vais continuer a gosser dessus, ça me sort encore des erreurs, je croyais vraiment que ça yétait... pourtant il me sort toujours la bonne valeur en alert lorsque je demande un array en particulier.

Le 16-10-2007 à 20:46 #

J'avais loupé celle là :

for (var i =0; i < myMardiArray.lenght, i++)

ne fonctionnera pas (je crois) à cause que en java un array.lenght = 4 veut dire en réalité un array dont la plage de valeur est entre 0 et 3...

Donc, solution :
for (var i =0; i < myMardiArray.lenght - 1, i++)

A+
jf

Le 17-10-2007 à 04:48 #

non ce n'est pas le problème. ma boucle php part de 0, donc les deux concordes, lorsque je demande le array 2 il me sort la 3ème ligne ce qui est correct... il y a quelque chose qui ne fonctionne pas dans la boucle mais je ne sais pas quoi... avec un alert ça me sort les bonnes données c bizare


Ajout du 17-10-2007 à 06:16:

Ok j'ai résolu le problème:

<SCRIPT language="javascript" >
function calcul(){
var myMardiArray=document.getElementsByName("mardipopote[]");
var myJeudiArray=document.getElementsByName("jeudipopote[]");
// ici tu déclare tes variable car tu ne peux les déclarer qu'une fois
var TotalMardi = 0;
var TotalJeudi = 0;

for (var i =0; i < (myJeudiArray.length); i++) {
TotalMardi = (TotalMardi * 1) + (myMardiArray[i].value * 1);
TotalJeudi = (TotalJeudi * 1) + (myJeudiArray[i].value * 1);
}
var somme = TotalMardi + TotalJeudi ;
var total = somme*5.5;
document.getElementById("somme").value = somme;
document.getElementById("total").value = total.toFixed(2);
}
</SCRIPT>

quelques erreurs de syntaxes dans la boucle, un gros merci pour le coup de pouce, c'est très apprécié.

Le 17-10-2007 à 15:24 #

s.v.p. ne pas oublier de mettre le marqueur résolu.

Le marqueur résolu

Merci.

» Liste des Forums » Programmation

Sujets Connexes

Arakien & WéWé


Forums

Navigation


Publicité

Connectés

Il y a actuellement 516 visiteurs et 14 toiliens en ligne, ainsi que 8 connectés sur le tchat.

Recherche

Annonces


Sauf mention contraire, le contenu du blog et du forum est sous licence Creative Commons By-Sa. Vous avez le droit de le reproduire à condition de citer l'auteur, de faire un lien vers la page d'origine, et de partager vos travaux dérivés selon les mêmes conditions.

Conditions d'utilisation -

Partenaires: [Informatique Multimédia] [Portail du Maroc] [Actualité High Tech]
[Tutoriaux Photoshop] [éligibilité ADSL] [Astuces Windows]

Page générée en 861 millisecondes sur WWW1.