Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Calcolare totale tra 2 variabili in un form

    Salve ragazzi,
    premetto che è la prima volta che mi affaccio al Javasc. Il problema che ho lo postato sul forum php, ma da tanti mi è stato consigliato di risolverlo col Java. Ora, cerco di spiegarmi il meglio possibile. Vorrei realizzare un form relativo all'acquisto di biglietti da parte di utenti registrati. La struttura sarebbe questa:

    evento, disponibilità biglietti, costo biglietto singolo, totale.

    Tutti i dati sono inseriti in un'apposita tabella nominata eventi, e potrei richiamarli in php. Ma il problema è fare il totale, ossia prezzo singolo per numero di biglietti acquistati (premetto che vorrei un select che permetta di scegliere quantità comprese tra 1 e 6).

    Come potrei strutturare un form del genere, che poi mi rimandi i dati ad un file php per memorizzarli in database?

    Ripeto, la mia conoscenza attuale del codice è zero...

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Parti da questo esempio per capire la logica, poi lo modichi a piacere http://javascript.html.it/demo/javas...51/esempio.htm
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Fai copia incolla e prova questo codice.
    Lo script potrebbe essere molto più sbrigativo ma almeno così si capisce come si accede agli elementi di un form e ai loro valori in javascript e come operano le variabili fra di loro.
    Il tutto va poi adattato all'invio di un form naturalmente, ma la sostanza non cambia. Ciao!

    <HTML>

    <HEAD>

    <SCRIPT language="JavaScript">

    function calcolatotale() {

    var a = document.forms[0].numero.options[document.forms[0].numero.selectedIndex].text;
    var b = document.forms[0].costo.value;
    var c = a * b;

    document.forms[0].totale.value=c;

    }

    function cancella() {

    document.forms[0].totale.value=0;
    document.forms[0].numero.selectedIndex=0;

    }

    </SCRIPT>

    </HEAD>

    <BODY>

    <FORM>
    <TABLE>
    <TR><TD>eventi</TD><TD><INPUT NAME="eventi" TYPE=text value="concerto" readonly></TD></TR>
    <TR><TD>disponibilità biglietti</TD><TD><INPUT NAME="disponilità" value="sì" TYPE=text readonly></TD></TR>
    <TR><TD>Costo biglietto</TD><TD><INPUT NAME="costo" TYPE=text value="10" readonly></TD></TR>
    <TR><TD>N. biglietti</TD>
    <TD><SELECT NAME="numero">
    <OPTION>1</OPTION>
    <OPTION>2</OPTION>
    <OPTION>3</OPTION>
    <OPTION>4</OPTION>
    <OPTION>5</OPTION>
    <OPTION>10</OPTION>
    </SELECT>
    </TD></TR>
    <TR><TD>Totale</TD><TD><INPUT NAME="totale" TYPE=text value="0" readonly></TD></TR>
    <TR><TD><INPUT value="calcola totale" TYPE="button" onclick="calcolatotale();"></TD></TR>
    </TABLE>
    </FORM>

    <INPUT value="cancella" TYPE="button" onclick="cancella();">

    </BODY>

    </HTML>

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Grazie Melvis,
    lo proverò in mattinata e poi ti farò sapere. Me lo studio anche un po', poi magari chiedo spiegazioni.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Allora,
    ho provato lo script ed è tutto piuttosto chiaro, almeno nel funzionamento. Correi però alcune delucidazioni. Qual'è il significato dello zero in questa funzione?

    var a = document.forms[0].numero.options[document.forms[0].numero.selectedIndex].text;

    Intendo lo zero tra parentesi quadre. Poi suppongo che il selected index sia rivolto al campo select del form giusto?

    altra cosa, sarebbe possibile, nel totale, invece che creare un pulsante che lo calcola, fare in modo che esca automaticamente senza essere costretti a clikkare su un bottone?

    Grazie mille

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    31
    Innanzitutto vorrei ringraziare infinitamente sia chi ha posto la domanda sia chi ha più che esaurientemente risposto, avevo la stessa identica necessità da una settimana e non riuscivo a trovare nessuno script nè forum che potesse aiutarmi!

    Sto già implementando il codico per moltiplicare il prezzo unitario per il numero di pezzi richiesti sul mio form, ma ho notato che anche se il prezzo unitario è per esempio 75,00 il risultato finale della moltiplicazione fa perdere i due decimali.
    Questo per me è un problema poichè la pagina di pagamento della banca accetta cifre in centesimi, ed è quindi assolutamente necessario per me che il form spedisca loro una cifra seguita da ",00" affinchè 75 euro non si trasformino in 0,75 euro...

    Come posso risolvere?

    Grazie ancora ragazzi!

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ciao Imoby,
    grazie a te per aver scritto. Perchè la risposta che ti verrà data servirà anche a me, visto che stò progettando un sito che poi abbia la possibilità di effettuare pagamenti via banca. Magari se potessi contattarti privatamente per sapere come hai implementato il pagamento via banca (quindi con database sql e php) te ne sarei grato.

    Intanto posto una piccola modifica allo script:

    <SCRIPT language="JavaScript">

    function calcolatotale() {

    var a = document.forms[0].numero.options[document.forms[0].numero.selectedIndex].text;
    var b = ("<? echo "$array[prezzo]";?>");
    var c = a * b;

    document.forms[0].totale.value=c;

    }

    function cancella() {

    document.forms[0].totale.value="";
    document.forms[0].numero.selectedIndex=0;

    }

    In pratica ho valorizzato la variabile b (var b) pescando un array direttamente dal database. Cosa comodissima per gli eventi inseriti appunto in database (ai quali vengono associati biglieetti e prezzi singoli che variano da evento ad evento).


    Il form ora ha questo codice:

    <form action="" method="post">
    <TABLE>
    <TR>
    <TD>evento</TD>
    <TD><?php echo "$array[evento]";?></TD></TR>
    <TR><TD>disponibilità biglietti</TD><TD><INPUT NAME="disponilità" value="sì" TYPE=text readonly></TD></TR>
    <TR><TD>Costo biglietto</TD><TD><?php echo "$array[prezzo]";?></TD></TR>
    <TR><TD>N. biglietti</TD>
    <TD><SELECT NAME="numero">
    <OPTION>1</OPTION>
    <OPTION>2</OPTION>
    <OPTION>3</OPTION>
    <OPTION>4</OPTION>
    <OPTION>5</OPTION>
    <OPTION>10</OPTION>
    </SELECT>
    </TD></TR>
    <TR><TD>Totale</TD><TD><INPUT NAME="totale" TYPE=text value="" readonly></TD></TR>
    <TR><TD><INPUT value="calcola totale" TYPE="button" onclick="calcolatotale();"></TD><td><INPUT value="cancella" TYPE="button" onclick="cancella();">
    </td></TR>
    </TABLE>
    </form>

    Mi piacerebbe levare il pulsante che effettua il calcolo a favore di un evento che lo faccia automaticamente quando viene scelto il numero di biglietti da acquistare. Poi chiaramente la tua domanda, sulle cifre decimali, resta validissima!!!!

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Problema risolto!!!! Ecco il form senza il bottone per il calcolo del totale:

    <form action="#" method="post">
    <div>Scheda : <?php echo "$array[evento]";?></div>

    <table><tr><td><div>Data</div></td><td><div>Ora</div></td><td><div>Evento</div></td><td><div>Città</div></td><td><div>Informazioni</div></td></tr><tr><td><div><?php echo "$array[dataevento]";?></div></td><td><div><?php echo "$array[ora]";?></div></td><td><div><?php echo "$array[evento]";?></div></td><td><div><?php echo "$array[luogo]";?></div></td><td><div>Come Arrivare</div></td></tr></table>

    Scegli:
    </span><span>Prodotto e quantità</span></div>
    <?php
    // fai partire la connessione al db
    mysql_connect($db_host,$db_user,$db_password,$db_n ame) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
    //imposti la query per vedere la disponibilità
    if(empty($_GET["id"])){
    echo"Non hai selezionato nulla";
    }
    else{
    $query= "SELECT * FROM eventi WHERE event_id='".$_GET['id']."'";
    $select=mysql_query($query) or die("Query fallita");
    }
    mysql_close();
    ?>

    <TABLE>
    <TR>
    <TD>evento</TD>
    <td><div>Disponibilità</div></td>
    <td><div>Prezzo</div></td>
    <td><div>Qtà</div></td>
    <td><div>Totale</div></td>
    </TR>
    <tr>
    <td colspan='5'> </td>
    </tr>
    <TR>
    <TD><?php echo "$array[evento]";?></TD>
    <TD><?php if ($array['disponibilita']==0){echo "no";}else{echo"si";}?></TD>
    <TD><?php echo "$array[prezzo]";?></TD>
    <TD><SELECT NAME="numero" onchange="calcolatotale();";>
    <OPTION>1</OPTION>
    <OPTION>2</OPTION>
    <OPTION>3</OPTION>
    <OPTION>4</OPTION>
    <OPTION>5</OPTION>
    <OPTION>10</OPTION>
    </SELECT>
    </TD>
    <TD><INPUT NAME="totale" TYPE="text" value="" readonly></TD>
    <td><INPUT value="cancella" TYPE="button" onclick="cancella();">
    </td></TR>
    </TABLE>
    </form>

    Ho inserito l'evento "onchange" sul select name, in modo che quando cambia il numero calcola il totale!!!!


    Ora si attendono risposte in merito ai decimali!

  9. #9
    Accidenti... questa dei decimali mi sfugge e non ho i manuali con me.
    Comunque il problema non dovrebbe essere insormontabile, sicuramente
    troverete qualcuno che potrà aiutarvi! Ciao :master:

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    31
    Utilissima la stringa per aggiornare in tempo reale il prezzo totale!

    Per quanto riguarda il pagamento bancario, la banca con la quale deciderai di sottoscrivere il servizio, ti dovrebbe poi mandare assieme alle guide (praticamente illeggibili...) del materiale d'esempio, sul quale io al momento sto ancora lavorando.
    Per quanto riguarda me (sto usando il servizio "Bankpass") consiste in una pagina html chiamata form ed in una in php.

    Il concetto è quello di fare riempire la pagina form al cliente: quando questi invia il form, il file in php va a leggere i vari campi del form necessari (prezzo, articolo scelto etc...) e li gira alla banca, attivando quindi nel browser del cliente la pagina protetta della banca per completare la transazione (immissione numero carta di credito etc...).

    Spero di essere stato chiaro, ma se hai altre domande fai pure!

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.