Visualizzazione dei risultati da 1 a 6 su 6

Discussione: jquery + ajax

  1. #1

    jquery + ajax

    Buongiorno a tutti...
    Ho creato un piccolo form in php che potete vedere al seguente link
    http://www.matteomosconi.com/timber/

    Il form è impostato su 2 colonne... la colonna sinistra contiene il form e la colonna destra contiene il riepilogo dei dati con un piccolo calcolo della variabile totale da passare a paypal.

    Ora però vorrei apportare qualche modifica, in particolare vorrei eliminare il tasto "conferma" e far si che il riepilogo si compili dinamicamente mentre l'utente compila il form!!!

    Come posso procedere? Dalla documentazione che ho trovato in rete credo che la soluzione sia in jquery e ajax...

    Grazie,
    M

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Documentati qui trovi sia jquery che ajax
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    nella documentazione che mi proponi... come anche in quelle che ho trovato nella rete ho sempre vesto utilizzare ajax con operazioni "onclick".
    Io mi chiedevo se era possibile ottenere il risultato che mi sono presupposto eliminando completamente il bottone "conferma" ed ottenendo un riepilogo dinamico che si aggiorna mano a mano che viene completato il form...

    è possibile? è la strada giusta?

    Grazie, M

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    si è possibile, ma secondo me non ti conviene, quando vuoi effettuare la chiamata ajax? sul keypress? sull'onblur? avresti troppe chiamate al server, e se queste informazioni le salvi su un db avresti anche un sacco di accessi al db. Ripeto secondo me non è la strada giusta da seguire... Se proprio vuoi utilizzare ajax lascerei il bottone, ma invece di effettuare una submit e quindi ricaricare la pagina effettui la chiamata ajax. Per ottenere un riepilogo dinamico(a parte iva,ritenuta e totale che calcoli con php) puoi anche non utilizzare ajax, le informazioni le hai nel client ti basta "copiarle" nella colonna di riepilogo...

    Il form è impostato su 2 colonne
    Io vedo una sola colonna, il riepilogo sta sotto il form non a destra... sto utilizzando chrome

  5. #5
    ti ringrazio per la risposta,
    Praticamente, i campi che determinano una variazione nel calcolo del totale sono 3:
    nazionalità, professione e numero di licenze. I tre campi in questione sono campi a scelta multipla. Vorrei che il calcolo del totale avvenisse istantanemante, mentre l'utente modifica il form. Gli altri campi quali nome, mail... li ho per ora aggiunti in modo posticcio... non vengono salvati da nessuna parte! il salvataggio pensavo di farlo in una fase successiva ma solo quando paypal, al completamento della transazione ti reindirizza sul mio sito.

    ecco lo stato attuale del mio codice:
    index.php
    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <title>Documento senza titolo</title>
            <link rel="stylesheet" type="text/css" href="css/layout.css">
        </head>
       <body>

       

        <?php
        
    include("form.php");
        
    ?>

       

        <?php
        
    include("riepilogo.php");
        
    ?>

       </body>
    </html>
    form.php (colonna SX)
    Codice PHP:



    <div class="colonna_SX">

       <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post">
       

       <fieldset>
        <legend>Informazioni personali </legend>
        <div>
                <label for="user">Nome [b]*[/b]</label>
                <input id="user" name="user">
            </div>
            <div>
                <label for="address">Email [b]*[/b]</label>
                <input id="address" name="address">
            </div>
        <div>
            <label for="nazione">Nazionalità [b]*[/b]</label>
            <select size="1" name="nazione" >
                <option selected value="1, Italia">Italia</option>
                <option value="0, Estero">Estero</option>
            </select> 
            </div>
            <div>
                <label for="city">Città [b]*[/b]</label>
                <input id="city" name="city">
            </div>
            <div>
             <label for="professione">Professione [b]*[/b]</label>                    
            <select size="1" name="professione" >
                <option selected value="0.04, Azienda, 0">Azienda</option>
                <option value="0, Ingegnere, 0">Ingegnere</option>
                <option value="0, Architetto, 0">Architetto</option>
                <option value="0.04, Studente, 1">Studente</option>
                <option value="0.04, Privato, 1">Privato</option>
            </select>
            </div>
        <legend2>Quantità</legend2>
            <div>
             <label for="licenze">N° Licenze [b]*[/b]</label>                        
            <select size="1" name="licenze">
                <option selected>1</option>
                <option> 2</option>
                <option> 3</option>
                <option> 4</option>
                <option> 5</option>
                <option> 6</option>
                <option> 7</option>
                <option> 8</option>
                 <option> 9</option>
                 <option> 10</option>
            </select>
            </div>
            <div>
        <input type="submit" id="go" value="Conferma" />
        

    I campi contrassegnati con [b]*[/b] sono obbligatori</p>
            </div>
       </fieldset>
       </form>
    </div>
    riepilogo.php (colonna DX)
    Codice PHP:

    <div class="colonna_DX">

        <fieldset>
        <legend>Riepilogo </legend><div>

        <?php
    //        if(isset($_POST['Submit'])){
            
    include("functions/conto.php");
    //    }
        
    ?>

        <div>
                <label for="user">Nome [b]:[/b]</label><?php echo $user?>
        </div>
        <div>
                <label for="address">Email [b]:[/b]</label><?php echo $email?>
        </div>
        <div>
            <label for="nazione">Nazionalità [b]:[/b]</label><?php echo $nazione?>
        </div>
        <div>
                <label for="city">Città [b]:[/b]</label><?php echo $city?>
        </div>
        <div>
            <label for="professione">Professione [b]:[/b]</label><?php echo $professione?>
        </div>
        <div>                
            <label for="licenze">N° Licenze [b]:[/b]</label><?php echo $licenze?>                    
        </div>


        <div>                
            <label for="licenze">Costo licenze [b]:[/b]</label><?php echo $x?>                    
        </div>
        <div>                
            <label for="licenze">Iva [b]:[/b]</label><?php echo $iva?>                    
        </div>
        <div>                
            <label for="licenze">Ritenuta [b]:[/b]</label><?php echo $ritenuta?>                    
        </div>
        <div>                
            <label for="licenze">TOTALE [b]:[/b]</label><?php echo $totale?>                    
        </div>


        <form action="https://www.paypal.com/it/cgi-bin/webscr" method="post">
        <input type="hidden" name="cmd" value="_xclick">
        <input type="hidden" name="business" value="mydangerousmind84@hotmail.com">
        <input type="hidden" name="item_name" value="Nome dell'oggetto">
        <input type="hidden" name="currency_code" value="EUR">
        <input type="hidden" name="amount" value="<?php echo $totale?>">
        <input type="image" src="https://www.paypalobjects.com/it_IT/IT/i/btn/btn_paynow_LG.gif" border="0" name="submit" >
        </form>

        </fieldset>
    </div>
    ed infine il file di calcolo conto.php
    Codice PHP:
    <?php

    error_reporting 
    (E_ALL & ~E_NOTICE);

    list(
    $value$professione$riten) = explode(', '$_POST['professione']);        // formato (%cnpaia; professione; 0
    list($tax$nazione) = explode(', '$_POST['nazione']);
    $n $_POST['licenze'];

    $a 0.21;                    // Imposta valore dell'IVA
    $b 0.20;                    // Imposta valore della ritenuta
    $prezzo1 350;                    // Imposta prezzo base licenza
    $prezzo2 250;                    // Imposta prezzo scontato
    $nsconto 5;                    // imposta numero min licenze per prezzo scontato

        
    if ($n >= $nsconto)
              {
    $prezzo $prezzo2;
        }else{ 
            
    $prezzo $prezzo1;}

    $x        $prezzo $n;            // calcolo del prezzo

        
    if ($tax == 0)
              {
    $valuex 0.04;
        }else{ 
            
    $valuex $value;}

    $cnpaia     $x $valuex;            // calcolo del contributo CNPAIA

        
    if ($tax == 0)
              {
    $ivax 0$ritenutax 0;
        }elseif (
    $riten == 1)
            {
    $ivax $a$ritenutax 0
        }else     {
    $ivax $a$ritenutax $b;
            }

    $iva         = ($x$cnpaia) * $ivax;

    $ritenuta     $x $ritenutax;

    $totale     $x $cnpaia $iva $ritenuta ;

    //echo "Nazionalità: = $nazione 
    ";
    //echo "
    Professione: = $professione 
    ";
    //echo "
    Quantità: = $n 
    ";
    //echo "
    Prezzo: = $x Euro

    "; 

    //echo "
    CNPAIA: = $cnpaia Euro
    ";
    //echo "
    IVA: = $iva Euro
    ";
    //echo "
    Ritenuta: = $ritenuta Euro
    ";
    //echo "
    TOTALE: = $totale Euro

    ";

    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Se proprio vuoi proseguire in questo senso le modifiche da apportare non sono poche

    - Creare una funzione da richiamare all'evento change delle 3 select
    - Effettuare una chiamata ajax passando in input(POST) le informazioni necessarie per il calcolo
    - Recuperare queste informazioni in php ed effettuare il calcolo
    - Restituire a js le informazioni ottenute in un determinato formato
    - Recuperare i dati forniti dal server e valorizzare i vari campi della colonna riepilogo

    L'unica parte che non dovresti modificare quindi è la terza cioè il recupero dati in POST e il calcolo che fai già.

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.