Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Kdes
    Registrato dal
    Oct 2006
    Messaggi
    171

    Somma dati utilizzando evento onchange

    Buona sera,
    sto cercando di utilizzare Javascript per risolvere una videata in cui inserendo un dato (quantit�) la riga mi dovrebbe calcolare l'importo in base al prezzo indicato.
    Il prezzo viene caricato attraverso una lettura di una tabella 'listino'.
    Ho creato una Form e ciclato per fare in modo di avere tanti elementi provenienti dalla tabella.
    Se faccio la moltiplicazione singolarmente, l'importo mi appare, mentre se ciclo per tutti gli elementi del listino ...... niente non riesco a determinare l'importo.
    La funzione Javascript (che non conosco) � ostica ma ho provato per logica, e non ci riesco.
    Dove sbaglio?
    Vi posto il codice, abbastanza semplice per un vostro suggerimento che mi consenta di capire dove non completo le istruzioni Javascript.
    Vi ringrazio in anticipo.
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it"><head>    <meta name="viewport" content="width=device-width">    <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />    <meta http-equiv="Content-Language" content="it" />        <script type='text/javascript'>//Funzione per arrotondamento a due cifre decimali e aggiunta di zerifunction cifre_decimali(x) {var c = String(Math.round(x*100));while (c.length < 3) c = '0' + c;return c.replace(/([0-9][0-9])$/,".$1");}//Funzione per l'aggiornamento in tempo reale del costo totale degli articolifunction calcola () {//Prelevo indicevar indice = parseFloat(document.modulo.indice.value);//Prelevo il prezzovar prezzo = parseFloat(document.modulo.prezzo[indice].value);//Prelevo il numero articolivar articoli = parseFloat(document.modulo.articoli[indice].value);var calcola_somma[indice] = 0.00;//Calcolo la sommacalcola_somma = Math.round(prezzo[indice] * articoli[indice] * 100)/100;//Scrivo la somma nel campo aggiungendo zero qual'ora non ci fosserodocument.modulo.somma.value=cifre_decimali(calcola_somma);}//-->    </script><style type="text/css"></style></head>
    <?phpheader('Content-type: text/html;charset=utf-8');$contatore  0;require ("conf.php");$link mysql_connect($server,$utente,$password)   or die  ("<br><strong>Non posso connettermi al Server</strong><br>".mysql_error());$conn=mysql_select_db($datab$link) or die("<br><strong>Non riesco a connettermi al Database.</strong><br>".mysql_error());$i 0;$quantita 0;$result mysql_query("select * from listino where (id_cliente = 'CL0001')");    while ($row mysql_fetch_array($result))        {        $prezzo[$i]            = $row['prezzo'];echo "<FORM NAME='modulo' METHOD='get' ACTION=''><p><input type='hidden' name='indice' value='$i'>Prezzo Articolo = <INPUT align='right' NAME='prezzo[]' TYPE='TEXT' value='$prezzo[$i]' SIZE='5' maxlength='5' disabled='disabled' id='prezzo'>Numero Articoli = <input name='articoli[]' id='articoli' value='$articoli[$i]' size=5 maxlength='5' onChange='calcola();'>Costo Totale = <INPUT NAME='somma[]' TYPE='TEXT' value='0.0' SIZE='5' maxlength='5' disabled='disabled'><br></p></FORM>";}?>
    Non chiedetemi quanti anni ho!!!!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Riposta il codice come lo riceve il browser cioè solo html (no php) formattato riga per riga, così d'avere una lettura migliore. Poi se ci fosse una pagina demo online sarebbe anche meglio oltre a vedere il tutto all'opera si potrebbero rilevare possibili errori a te sfuggiti.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di Kdes
    Registrato dal
    Oct 2006
    Messaggi
    171
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Riposta il codice come lo riceve il browser cio� solo html (no php) formattato riga per riga, cos� d'avere una lettura migliore. Poi se ci fosse una pagina demo online sarebbe anche meglio oltre a vedere il tutto all'opera si potrebbero rilevare possibili errori a te sfuggiti.
    Grazie Andrea per aver risposto.
    Non ho la possibilit� di linkare in quanto sto facendo il tutto con Easyphp.

    codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it"><head>	<title>Nuovo Ordine</title>	<meta name="viewport" content="width=device-width">	<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />	<meta http-equiv="Content-Language" content="it" />	<link rel='stylesheet' type='text/css' href='src/jquery.multi-ddm.css' />	<link rel="stylesheet" type="text/css" href="image/template.css" />	<script type='text/javascript' src='jquery/jquery-1.4.2.js'></script>	<script type='text/javascript' src='src/jquery.multi-ddm.js'></script><style type="text/css"></style></head>
    <body><table width="50%" border="0" cellspacing="0" cellpadding="0"><td><img src="./image/<?php echo $logo ;?>"></td><td><?php echo "Nuovo ordine : -".$nick; ?>-</td><td>Oggi : <?php echo date('d/m/Y'); ?></td><tr></table><script type='text/javascript'>$(document).ready(function(){	$('#multi-ddm').dropDownMenu({timer: 1000, parentMO: 'parent-hover', childMO: 'child-hover1'});});</script><script type='text/javascript'>function cifre_decimali(x) {var c = String(Math.round(x*100));while (c.length < 3) c = '0' + c;return c.replace(/([0-9][0-9])$/,".$1");}//Funzione per l'aggiornamento in tempo reale del costo totale degli articolifunction calcola () {//Prelevo il prezzovar prezzo = parseFloat(document.modulo.prezzo.value);//Prelevo il numero articolivar articoli = parseFloat(document.modulo.quantita.value);var calcola_somma = 0.00;//Calcolo la sommacalcola_somma = Math.round(prezzo * articoli * 100)/100;//Scrivo la somma nel campo aggiungendo zero qual'ora non ci fosserodocument.modulo.somma.value=cifre_decimali(calcola_somma);}</script><hr width="50%" align="left"><form action="action.php" method="post"><table width="50%"><th><?php echo $prodotto;?></th><th>Unit�</th><th>Quantit�</th><th>Prezzo</th><th>IVA</th><th>Sconto</th><tr> 
    Questo � il codice HTML.

    Codice PHP:
    <?php$data=date('Y-m-d');$azione "scrivi";$i 0;$quantita 0;$result mysql_query("select * from listino where (id_cliente = '$codice') and (data_inizio <= '$data' and            data_fine >= '$data') and (tipo_prodotto = '$prodotto')");    while ($row mysql_fetch_array($result))        {        $i $i+1;        $descrizione[$i]    = $row['descrizione'];        $unita[$i]            = $row['unita'];        $id_listino[$i]        = $row['id_listino'];        $prezzo[$i]            = $row['prezzo'];        $iva[$i]            = $row['iva'];        $sconto[$i]            = $row['sconto'];        echo "<td>$descrizione[$i]</td>            <td>$unita[$i]</td>            <td><input type='text' name='quantita[]' size=3 maxlength=5 value='0' ></td>            <td><INPUT NAME='prezzo' TYPE='TEXT' value='$prezzo[$i]' SIZE=3 maxlength=5 disabled='disabled'></td>            <td><input name='iva' disabled='disabled' SIZE=3 value='$iva[$i]'></td>            <td align='right'><input name='iva' disabled='disabled' SIZE=3 value='$sconto[$i]'></td>            <td><input type='hidden' name='id_listino[]' value=$id_listino[$i]></td>        <tr>            ";        }echo "<td align='center' colspan='7' bgcolor='green'><input type='submit' name='Ordina' value='Ordina' ></td>";
    $_SESSION['nick']        = $nick;$_SESSION['codice']     = $codice;$_SESSION['logo']        = $logo;$_SESSION['azione']    = $azione;?>
    E questo � il codice php.
    Non so se � chiaro e qualora non lo fosse dimmi cosa devo fare
    Non chiedetemi quanti anni ho!!!!

  4. #4
    Utente di HTML.it L'avatar di Kdes
    Registrato dal
    Oct 2006
    Messaggi
    171
    Scusa vedendo la risposta non capisco come mai i dati non sono formattati per essere leggibili.
    Ho messo il codice entro i TAG HTML e PHP, dove sbaglio?
    Non chiedetemi quanti anni ho!!!!

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    E' easyphp che formatta tutto di seguito prova: Copi e incolli il codice* in blocconote se non lo sistema automaticamente dovrai formattarlo tu riga per riga.
    Ti consiglio di aprire uno spazio gratuito su altervista per testare il sito online per non avere sorprese quando pubblicherai la versione definitiva.

    *Per postare codice html che è quello che riceve il browser lanci la pagina > tasto destro mouse poi copi codice sorgente
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it L'avatar di Kdes
    Registrato dal
    Oct 2006
    Messaggi
    171
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    E' easyphp che formatta tutto di seguito prova: Copi e incolli il codice* in blocconote se non lo sistema automaticamente dovrai formattarlo tu riga per riga.
    Ti consiglio di aprire uno spazio gratuito su altervista per testare il sito online per non avere sorprese quando pubblicherai la versione definitiva.

    *Per postare codice html che è quello che riceve il browser lanci la pagina > tasto destro mouse poi copi codice sorgente
    Grazie per la tua pazienza.
    Riposto il codice.
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it">
    <head>
        <meta name="viewport" content="width=device-width">
        <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
        <meta http-equiv="Content-Language" content="it" />
        
        <script type='text/javascript'>
    //Funzione per arrotondamento a due cifre decimali e aggiunta di zeri
    function cifre_decimali(x) {
    var c = String(Math.round(x*100));
    while (c.length < 3) c = '0' + c;
    return c.replace(/([0-9][0-9])$/,".$1");
    }
    //Funzione per l'aggiornamento in tempo reale del costo totale degli articoli
    function calcola () {
    //Prelevo indice
    var indice = parseFloat(document.modulo.indice.value);
    //Prelevo il prezzo
    var prezzo = parseFloat(document.modulo.prezzo[indice].value);
    //Prelevo il numero articoli
    var articoli = parseFloat(document.modulo.articoli[indice].value);
    var calcola_somma[indice] = 0.00;
    //Calcolo la somma
    calcola_somma = Math.round(prezzo[indice] * articoli[indice] * 100)/100;
    //Scrivo la somma nel campo aggiungendo zero qual'ora non ci fossero
    document.modulo.somma.value=cifre_decimali(calcola_somma);
    }
    //-->
        </script>
    <style type="text/css">
    </style>
    </head>
    
    
    <?php
    header('Content-type: text/html;charset=utf-8');
    $contatore  = 0;
    require ("conf.php");
    $link = mysql_connect($server,$utente,$password) 
      or die
      ("<br><strong>Non posso connettermi al Server</strong><br>".mysql_error());
    $conn=mysql_select_db($datab, $link) or die("<br><strong>Non riesco a connettermi al Database.</strong><br>".mysql_error());
    $i = 0;
    $quantita = 0;
    $result = mysql_query("select * from listino where (id_cliente = 'CL0001')");
        while ($row = mysql_fetch_array($result))
            {
            $prezzo[$i]            = $row['prezzo'];
    echo "<FORM NAME='modulo' METHOD='get' ACTION=''>
    <p>
    <input type='hidden' name='indice' value='$i'>
    Prezzo Articolo = <INPUT align='right' NAME='prezzo[]' TYPE='TEXT' value='$prezzo[$i]' SIZE='5' maxlength='5' disabled='disabled' id='prezzo'>
    Numero Articoli = <input name='articoli[]' id='articoli' value='$articoli[$i]' size=5 maxlength='5' onChange='calcola();'>
    Costo Totale = <INPUT NAME='somma[]' TYPE='TEXT' value='0.0' SIZE='5' maxlength='5' disabled='disabled'><br>
    </p>
    </FORM>";
    }
    ?>
    Non chiedetemi quanti anni ho!!!!

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Nel ciclo php hai gli id dei vari campi ripetuti, ricordati di postare il codice html che riceve il browser il php gira sul server
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it L'avatar di Kdes
    Registrato dal
    Oct 2006
    Messaggi
    171
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Nel ciclo php hai gli id dei vari campi ripetuti, ricordati di postare il codice html che riceve il browser il php gira sul server
    Scusa Andrea, ma ti
    riferisci agli id"prezzo" id " articoli" ?
    dovrei toglierli dalla definizione del TAG INPUT?

    Il codice HTML � gi� l�, � un semplice script che legge la tabella listino e cicla con l'indice $i.

    Ma forse non ho capito cosa intendi.

    Comunque grazie ancora
    Non chiedetemi quanti anni ho!!!!

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    nuovo blocco input :
    Codice PHP:
    echo "<FORM NAME='modulo' METHOD='get' ACTION=''>
    <p>
    <input type='hidden' name='indice' value='
    $i'>
    Prezzo Articolo = <INPUT align='right' NAME='prezzo[]' TYPE='TEXT' value='
    $prezzo[$i]' SIZE='5' maxlength='5' disabled='disabled' id='prezzo$i'>
    Numero Articoli = <input name='articoli[]' id='articoli
    $i' value='$articoli[$i]' size=5 maxlength='5' onChange='calcola($i);'>
    Costo Totale = <INPUT NAME='somma[]' TYPE='TEXT'  id='somma
    $i' value='0.0' SIZE='5' maxlength='5' disabled='disabled'><br>
    </p>
    </FORM>"

    nuova funzione calcola js:
    codice:
    function calcola(row){
    	var art = (document.getElementById("articoli"+row).value=="")? 0 : document.getElementById("articoli"+row).value;
    	var pz = (document.getElementById("prezzo"+row).value=="")? 0 : document.getElementById("prezzo"+row).value;
    	var subtotale = (parseInt(art)*parseInt(pz));
    	if(subtotale==0){document.getElementById("somma"+row).value="";}else{document.getElementById("somma"+row).value=subtotale}
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it L'avatar di Kdes
    Registrato dal
    Oct 2006
    Messaggi
    171
    Grazie Andrea, quindi la definizione degli 'id' va fatta in quel modo!
    Grazie tantissimo per quanto hai descritto.
    Lo prover� immediatamente e ti far� sapere.
    Non chiedetemi quanti anni ho!!!!

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.