Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37

Discussione: Fare una somma totale

  1. #1

    Fare una somma totale

    Salve, vi invito a guardate queste righe sotto

    <tr>
    <td><input type="text" name="pz1" size="5" onChange="document.fattura.prezz1.value = document.fattura.pz1.value * document.fattura.pre1.value;"></td>
    <td><input type="text" name="pre1" size="7" onChange="document.fattura.prezz1.value = document.fattura.pz1.value * document.fattura.pre1.value;"></td>
    <td><input type="text" name="prezz1" size="7"></td>
    </tr>
    <tr>
    <td><input type="text" name="pz2" size="5" onChange="document.fattura.prezz2.value = document.fattura.pz2.value * document.fattura.pre2.value;"></td>
    <td><input type="text" name="pre2" size="7" onChange="document.fattura.prezz2.value = document.fattura.pz2.value * document.fattura.pre2.value;"></td>
    <td><input type="text" name="prezz2" size="7"></td>
    </tr>

    C'è qualche modo per far si che una casellina sotto (questa

    <input type="text" name="prezTOT" size="7">
    Calcoli il totale delle caselline prezz1 e prezz2? Ricordo che qui di calline prezz ce ne sono solo due, ma realmente ne inserirò 30, pertanto esiste un modo per far fare il calcolo solo alla casellina prezzTOT??


    Grazie

    P.S.: Mi sapete indicare se c'è qualche sito con tutte le funzioni matematiche e se le formule EXCEL hanno qualcosa a che far ecol java?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Si puo` fare senz'altro, ma a questo punto ti conviene fare una funzione esterna all'HTML (in uno script nella head - per non complicare troppo la pagina).

    DevGuru

    Non conosco java, per cui non ti so dire di excel. La mia impressione e` che excel abbia sviluppato delle funzioni sue, che sono state implementate direttamente in un linguaggio compilato. La chiamata assomiglia a molti linguaggi.

    fondamentamentalmente il tuo loop:

    var pretot = 0;
    for(var i=1; i<=MAX; i++) {
    pretot += ff.elements['prezz'+i].value;
    }

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Ciao Michele, purtroppo io non ho mai usato questi linguaggi e non sò cosa fare.
    Potresti scrivermi esattamente tu cosa dovrei modificare su
    Codice PHP:
    <input type="text" name="prezTOT" size="7"
    Ti ringrazio

    Inoltre, cosa intendi per fare uno script nella head? mi faresti un'esempio?

    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ti vedo da parecchio tempo, e credevo fossi piu` abile con JS.
    codice:
    <head>
     ...
    <script ...>
    function calcola(ff,k) {
      ff.elements['prezz'+k].value = ff.elements['pz'+k].value * ff.elements['pre'+k].value;
    
      var pretot = 0;
      for(var i=1; i<=MAX; i++) {
        pretot += ff.elements['prezz'+i].value;
      }
      ff.prezTOT.value = pretot;
      return true;
    }
    </script>
    </head>
    <body ...>
    ...
    <form ...>
    <table ...>
    <tr>
      <td><input type="text" name="pz1" size="5" onChange="calcola(this.form,1);"></td>
      <td><input type="text" name="pre1" size="7" onChange="calcola(this.form,1)"></td>
      <td><input type="text" name="prezz1" size="7" readonly="true"></td>
    </tr>
    ... similmente per tutte le altre: cambia il secondo parametro.....
    </table>
    <input type="text" name="prezTOT" size="7" readonly="true">
    </form>
    ....
    Nota: al posto di MAX devi metterci il numero massimo di righe

    Spero che cosi` ti sia sufficiente.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Ciao, purtroppo non ho mai studiato il javascript perchè pensavo servisse a poco (ti dico la verità), invece stò scoprendo che il javascript è un linguaggio veramente ottimo!

    Comunque ho provato e adattato quello che mi hai scritto al mio script PHP.
    La moltiplicazione la fa (così è anche meglio perchè la pagina è più leggera.) ma la somma invece non correttamente!
    Come prima cosa prima della somma mette 0 (quello che trova su var pretot), mentre la somma dei numeri non la fa! Scrive solamente i numeri che trova nelle caselle prezz ma senza sommarli...

    Prova a ricontrollarlo perfavore, ti invio il codice così com'è

    Codice PHP:
    <HTML>
    <HEAD>
    <TITLE>Fattura con IVA: inserisci una nuova voce</TITLE>
    <link rel="stylesheet" type="text/css" href="style.css">

    <script>
    function calcola(ff,k) {
      ff.elements['prezz'+k].value = ff.elements['pz'+k].value * ff.elements['pre'+k].value;

      var pretot = 0;
      for(var i=1; i<=2; i++) {
        pretot += ff.elements['prezz'+i].value;
      }
      ff.prezTOT.value = pretot;
      return true;
    }
    </script>

    </HEAD>
    <BODY>

    ............
      
    <?
    for($i=1$i<30 $i++)
    {
        echo 
    "<tr>
        <td width=\"1\">
    $i</td>
        <td><INPUT TYPE=\"text\" NAME=\"descr
    $i\" SIZE=70></td>
        <td><INPUT TYPE=\"text\" NAME=\"um
    $i\" SIZE=3></td>
        <td><input type=\"text\" name=\"pz
    $i\" size=\"5\" onChange=\"calcola(this.form,$i);\"></td>
        <td><input type=\"text\" name=\"pre
    $i\" size=\"7\" onChange=\"calcola(this.form,$i);\"></td>
        <td><input type=\"text\" name=\"prezz
    $i\" size=\"7\"></td>
        <td><INPUT TYPE=\"text\" NAME=\"iva
    $i\" SIZE=\"3\" MAXLENGTH=\"2\" readonly=\"true\"></td></tr>";
    }
    ?>    
      
    </table>



    [b]Calcolo automatico dell'IVA e totale fattura[/b]


    <input type="text" name="prezTOT" size="7" readonly="true">






    <INPUT TYPE="SUBMIT" NAME="invio" VALUE="Inserisci fattura">

    </FORM>


    </BODY>
    </HTML>
    Fammi sapere

    P.s.: Purtroppo poi devo fare anche lo scorporo dell'IVA e qui la cosa si fa complicata, poi ti spiegherò perchè...

  6. #6
    CANCELLARE QUESTO MESSAGGIO, PLEASE

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ho dimenticato di convertire in numero: occorre inserire degli opportuni parseInt() (per i valori interi) e parseFloat() (per i numeri reali):

    ff.elements['prezz'+k].value = parseInt(ff.elements['pz'+k].value) * parseFloat(ff.elements['pre'+k].value);

    var pretot = 0;
    for(var i=1; i<=2; i++) {
    pretot += parseFloat(ff.elements['prezz'+i].value);
    }

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Scusa se insisto, c'è un'ultimisismo problema.
    Il codice hai detto che è:
    Codice PHP:
    <script>
    function 
    calcola(ff,k) {
      
    ff.elements['prezz'+k].value parseInt(ff.elements['pz'+k].value) * parseFloat(ff.elements['pre'+k].value); 
     
      var 
    pretot 0
      for(var 
    i=1i<=2i++) { 
      
    pretot += parseFloat(ff.elements['prezz'+i].value); 
      } 

      
    ff.prezTOT.value pretot;
      return 
    true;
    }
    </script> 
    i<=2; imòlica che ci siano almeno due righe e che vengano entrambe compilate.
    i<=2; lo dovò cambiare in i<=33;!! Però non è detto che vengano riepiti tutt'è 33 i campi, può darsin anche 2 o 3!!! Purtroppo se non vengono compilato la somma mi da il solito errore NaN!!

    Come si può fare??

    Grazie :mavieni:

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    2 possibilita`:

    - ci metti zero in tutti i campi prezz (quando carichi la pagina)

    - modifichi lo script in modo da verificare se il campo contiene un numero:
    [code]
    var pretot = 0;

    for(var i=1; i<=2; i++) {
    var cc = parseFloat(ff.elements['prezz'+i].value);
    if(!isNaN(cc) ) pretot += cc;
    }
    [code]

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  10. #10
    Perfetto!!

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.