Calcul horizontal et vertical précision sur question

tonytruand Messages postés 175 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 8 mars 2015 - 27 févr. 2005 à 20:39
tonytruand Messages postés 175 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 8 mars 2015 - 2 mars 2005 à 17:48
j'arrive à appliquer une formule, par exemple addition, sur une ligne et sur
une colonne, mais je ne sais pas comment faire sur plusieurs lignes et
plusieurs colonnes le but étant d'obtenir un total en bout de chaque
ligne et chaque colonne.

Ce que j'ai oublié de dire c'est que le tableau en question est le résultat d'une
recherche depuis une base de données, le nombre de lignes est susceptible de
changer en fonction de la recherche (pas des colonnes); le name des inputs est
par exemple aaa en vertical et bbb en horizontal donc dés que je passe un total
sur une 2ème ligne je me retrouve évidemment avec la même référence d'input
et cela ne marche pas.
si quelqu'un pouvait me renseigner ce serait sympas merci !!

6 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
28 févr. 2005 à 07:51
Bonjour,

accès au contenu des cellules :
formulaire.tableau.rows(n° ligne).cells(n° colonne).innerHTML

mais s'il y a des input :
le name des inputs est par exemple aaa en vertical et bbb en horizontal
ça veut dire quoi ?
<tr><td></td><td></td>...</tr>

<tr><td></td><td></td>...</tr>...
il y a quoi à la place des ? [ nous donner un petit extrait
de la page html générée, pas le PHP, si "difficile" à expliquer ]

Cordialement. Bul. ~Site
~~
[mailto:marcelBultez@tiscali.fr Mail
]~
0
tonytruand Messages postés 175 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 8 mars 2015
28 févr. 2005 à 17:46
Bonjour c'est sympa de vous pencher sur mon souci; voici une copie de la
source et ce qu'il me manque c'est le total horizontal, je m'y prends
certainement mal mais je n'y arrive pas d'autant plus que le tableau
peut évoluer en nombre de lignes (puisqu'il est généré par le résultat d'une
recherche depuis une page précédente).nb: j'ai trés simplifié ce tableau
puisque c'est le principe qui m'intéresse.

<html><head><title></title>
<script language="JavaScript">
function calcul1() {
var total = 0;var nb;
nb = document.totaux.retour.length;
total = eval(document.totaux.infini.value);
for( i = 0 ; i < nb ;i++ ) {
if (document.totaux.retour[i]) total total + eval(document.totaux.retour[i].value);total Math.floor(total * 100.01)/100;}
document.totaux.vertical1.value = total;
}


function calcul2() {
var total = 0;var nb;
nb = document.totaux.retour1.length;
total= eval(document.totaux.infini.value);
for( i = 0 ; i < nb ; i++ ) {
if (document.totaux.retour1[i])
total = total + eval(document.totaux.retour1[i].value);
}document.totaux.vertical2.value = total;
}</script>


</head>

<form name="totaux">
,
----

, ,
,
----

,
,
,
----

Somme,
Somme,
,
</form>

</html>

Merci d'avance @+
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2005 à 09:16
n'est-il pas possible de générer des names
( ou des id ) plus "homogènes" ? du style :
<tr>
<td></td>
<td></td>
<td></td>
<td></td></tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td></tr> ...
ce qui permettrait d'imbriquer 2 boucles
la 1ère sur v.length ( les lignes ) ou sur
getelementById(v n° ligne)
l'autre sur h"n° ligne" ( les colonnes
à cumuler vers v[n° ligne] )
ou getelementById(h n° ligne_n° colonne)
car tel que c'est fait là,
difficile d'automatiser simplement.
Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
0
tonytruand Messages postés 175 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 8 mars 2015
1 mars 2005 à 21:03
Merci, mais je n'y arrive toujours pas, je pense que votre principe est bon
mais comme je débute en javascript je pense que je me plante complètement
et qu'il va me falloir lire des bouquins sur le sujet pour pouvoir me lancer

<html><head><title></title>
<script language="JavaScript">


function calculhorizontal() {
var total = 0;var nb;
nb = document.totaux.h1.length;
total = eval(document.totaux.infini.value);
for( i = 0 ; i < nb ;i++ ) {
if (document.totaux.h1[i])
total = total + eval(document.totaux.h1[i].value);
}document.totaux.v1.value = total;
{
var total = 0;var nb;
nb = document.totaux.h2.length;
total = eval(document.totaux.infini.value);
for( i = 0 ; i < nb ;i++ ) {
if (document.totaux.h2[i])
total = total + eval(document.totaux.h2[i].value);
}document.totaux.v2.value = total;
}}



function calculvertical() {
var total = 0;var nb;
nb = document.totaux.v1.length;
for( i = 0 ; i < nb ; i++ ) {
if (document.totaux.v1[i])
total = total + (eval(document.totaux.h1[i].value)) + (eval(document.totaux.h2[i].value));
}document.totaux.vertical1.value = total;}


</script>


</head>

<form name="totaux">
,
----

, , ,
----

, , ,
----

Somme, Somme, ,
</form>

</html>
0

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

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 mars 2005 à 09:32
un ch'tit exemple alors ?

<HTML>
<HEAD>
<TITLE>Exemple à adapter</TITLE>
<script type="text/javascript">
function calcul()
{for ( var l=0;l<frm.v.length;l++)
{ frm.v[l].value=0;
var cm=frm["h"+l].length;
for (var c=0;c<cm;c++ )
{ frm.v[l].value=Number(frm.v[l].value)+Number(document.frm["h"+l][c].value);
} } }
</script>
</HEAD>

<form name="frm">
,
,
,
----
,
,
,
----
,
,

</form>
</HTML>

les champs mériteraient d'être
controlés avant le calcul ....
Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
0
tonytruand Messages postés 175 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 8 mars 2015
2 mars 2005 à 17:48
C'est effectivement sans comparaison aucune avec mon brouillon mais je vais
y travailler sérieusement, peut être qu'un jour à mon tour je pourrais rendre
service à d'autres .

MERCI
0
Rejoignez-nous