Si, adesso sembra che funziona tutto regolarmente.
Ti ringrazio molto Mich_
![]()
Si, adesso sembra che funziona tutto regolarmente.
Ti ringrazio molto Mich_
![]()
Sempre più in alto...
www.webdition.com
VVoVe:
chiedo venia! un errore c'é ancora
dunque, io inserisco le mie belle quantità.
se poi vado a correggere una delle quantità mettendo un altro valore va tutto bene, ma se inserisco un valore che non é un intero mi dà l'alert, mi azzera la quantità, ma non mi aggiorna il totale
:master:
Sempre più in alto...
www.webdition.com
ecco, ho messo il calcolo del totale anche nella condizione in cui la quantità immessa non é intera.
non so se é il metodo migliore ma funziona:
// controlla se la quantità é un numero intero
if(q.value!=parseInt(q.value)&&q.value!=""){
alert("Inserire un numero intero !");
q.value="";
s.value="";
//ricalcola il totale
var tot = 0;
for(var i=1; i<=2; i++) { // al posto di 2 metti l n. max
var sub = f.elements["subtot"+i].value;
if(sub == "") sub = 0;
tot += parseFloat(sub);
}
// formatta con due decimali il campo totale
stringatot = new String(Math.round(tot*100)/100);
stringatot += (stringatot.indexOf(".")<0)?'.00':'00';
stringatot = stringatot.substr(0,stringatot.indexOf(".")+3);
f.totale.value = stringatot;
return false;
}else{
// moltiplica quantità per prezzo
subt = q.value * p.value;
// formatta con due decimali ogni campo subtotale
stringa = new String(Math.round((subt)*100)/100);
stringa += (stringa.indexOf(".")<0)?'.00':'00';
stringa = stringa.substr(0,stringa.indexOf(".")+3);
s.value=stringa;
// calcola valore totale
var tot = 0;
for(var i=1; i<=2; i++) { // al posto di 2 metti l n. max
var sub = f.elements["subtot"+i].value;
if(sub == "") sub = 0;
tot += parseFloat(sub);
}
// formatta con due decimali il campo totale
stringatot = new String(Math.round(tot*100)/100);
stringatot += (stringatot.indexOf(".")<0)?'.00':'00';
stringatot = stringatot.substr(0,stringatot.indexOf(".")+3);
f.totale.value = stringatot;
}
}
spero che ora sia tutto a posto
Sempre più in alto...
www.webdition.com
scusate se riapro questa discussione, ma come faccio a fare la somma di campi senza sapere prima il numero di campi da sommare? e si può fare che ogni volta che viene modificato un dato viene ricalcolato completamente il totale?
grazie mille
ratatuia
Cosi' come ho postato il codice il totale viene ricalcolato in ogni caso se vado a cambiare una quantita in uno dei campi.
Per quanto riguarda il numero di campi, ho adattato questo codice inserendo al posto di 2 campi, come nell'esempio, una variabile che contiene il numero di articoli presenti in un database.
Ovviamente devi tenere conto di questa variabile anche per costruire i campi del form.
Sempre più in alto...
www.webdition.com
mi potresti evidenziare questa parte in cui c'è la variabile con il numero di articoli? grazie mille![]()
allora, estrai dal tuo database gli articoli e dai alla variabile $k il valore del numero di articoli con cui poi costruisci i campi del form:
<form name="form1" method="post" action="inviaordine.php">
<?php
$k=0;
$sqlof="SELECT * FROM offerte ORDER BY posizione ASC";
$risultati_mysqlof=mysql_query($sqlof,$connessione );
$num_righeof=mysql_num_rows($risultati_mysqlof);
if ($num_righeof!=0){
while($rigaof=mysql_fetch_array($risultati_mysqlof ))
{
$k=$k+1;
$descrizioneof=$rigaof["descrizione"];
$prezzoof=$rigaof["prezzo"];
$prezzoof=number_format($prezzoof, 2, '.', '');
?>
<input name="item<?=$k?>" type="text" id="item<?=$k?>" value="<?=$descrizioneof?>">
<input name="prezzo<?=$k?>" type="text" id="prezzo<?=$k?>" value="<?=$prezzoof?>">
<input name="quant<?=$k?>" type="text" class="modulo" id="quant<?=$k?>" size="6" onKeyup="subtotale(<?=$k?>)">
<input name="subtot<?=$k?>" type="text" class="modulo" id="subtot<?=$k?>" size="10" onFocus="this.blur()">
<?
}
}
?>
Non sono stato a metterti tutti idettagli di costruzione della tabella perché il mio codice é molto lungo, ma il principio é questo.
In pratica anche i nomi dei campi prendono la variabile.
Sempre più in alto...
www.webdition.com