• User

    Carrello HTML - Invio modulo tramite email

    Ciao a tutti: ho bisogno di una vostra mano!
    Ho creato (non proprio da solo..) una specie di carrello. Nella pagina ordini, che raccoglie tutti i dati relativi alla spedizione, c'è questo modulo, che verrà inviato per email: so che è sconsigliato utilizzare l'html per questo genere di cose ma è l'unica soluzione che ho.
    Ora però non riesco a creare la funzione che invia il modulo tramite email!!! Questo è il codice (fatto tramite front page):

     <script language="javascript">
                                      var numprod=0;
    
    function punteggiatura(num) {
        retval =""+num;
        if (retval < 1000) {
                                     while (retval.length < 10){ 
                                retval =" "+retval 
                                        }
                                    }
        if ((retval <= 999999) && (retval >= 1000)) {
                                    temp1 = retval.substring(0,retval.length-3);
                                    temp2 = retval.substring(retval.length-3,retval.length+1);
                                   retval =temp1+"."+temp2;
                                    while (retval.length < 10){ 
                                retval =" "+retval 
                                        }
                                    }
        if(retval >= 1000000) {
                                    temp1 = retval.substring(0,retval.length-6);
                                    temp2 = retval.substring(retval.length-6,retval.length-3);
                                    temp3 = retval.substring(retval.length-3,retval.length+1);
                                    retval=temp1+"."+temp2+"."+temp3;
                                    while (retval.length < 10){ 
                                retval =" "+retval 
                                        }
                                    }
    return retval;
    }
    document.write('<div align="center"><center>');
    var quant=0;
    var prezzo=0;
    var totale=0;
    var string=document.cookie;
    var puntatore=string.lastIndexOf("Lampade=#");
    var lung=string.indexOf("##");
    
    function update(form) {
        var Prezzoup=0;
        var Qt=0;
        var Sub=0;
        var SubTotale=0;
        for (i=1; i<=cont; i++) {
            Prezzoup=eval("form.Prezzo"+i+".value");
            Qt=eval("form.Quant"+i+".value");
            if (isNaN(Qt) || (Qt<0) || (Qt=="")) {Qt=1;
                            eval("form.Quant"+i+".value=1");}
            if (Qt>999) {Qt=999;
                           eval("form.Quant"+i+".value=999");}
            Sub=(parseInt(Prezzoup))*(parseInt(Qt));
            SubTotale+=parseInt(Sub);
            eval("form.Totale"+i+".value=punteggiatura(Sub)");
        }
        var indice=form.Trasporti.selectedIndex;
        Prezzoup=form.Trasporti.options[indice].value;
        form.TotaleTrasporti.value=punteggiatura(Prezzoup);
        SubTotale+=parseInt(Prezzoup);
        form.TotaleFinale.value=punteggiatura(SubTotale);
    }
    
    function errore(campo) {
    alert("Il campo "+campo+" è vuoto");
    }
    
    function controllo(form) {
    var err=0;
    if (form.Email.value=="") err="Email";
    if (form.Nazione.value=="") err="Nazione";
    if (form.CAP.value=="") err="CAP";
    if (form.Provincia.value=="") err="Provincia";
    if (form.Comune.value=="") err="Comune";
    if (form.Indirizzo.value=="") err="Indirizzo";
    if (form.Societa.value=="") err="Società";
    if (form.Cognome.value=="") err="Cognome";
    if (form.Nome.value=="") err="Nome";
    if (err==0) Ordine.submit();
    else errore(err);
    }
    
    var quantit=0;
    var prezzo=0;
    var totale=0;
    var cont=0;
    var stop=0;
    var string=document.cookie;
    var puntatore=string.lastIndexOf("Lampade=#");
    var lung=string.indexOf("##");
    if (puntatore == -1) {document.write('<p><font size="1" face="Verdana" color="#FFFFFF">Per poter effettuare un ordine è necessario aggiungere almeno un articolo nel carrello. <br><br><b><a href="shop.htm">Vai alla pagina shop</a></font></b></p>'); stop=1;}
        else {
        document.write('<br><center><font size="1" face="Verdana" color="#FFFFFF">Tutti i campi sono obbligatori.<br>E\' possibile cambiare la quantità degli articoli.<br>Per eliminare un articolo immettere il valore \"0\".</center><br>')
        document.write('<form METHOD="POST" ACTION="[email protected]"><!-- webbot bot="SaveResults" S-Email-Format="TEXT/PRE" S-Email-Address="[email protected]" S-Email-Subject="Nuovo ordine" S-Builtin-Fields -->');
        document.write('<div align="center"><center>');
        document.write('<table border="1" cellspacing="1"> <tr>');
        document.write('<td align="right">Nome</td>');
        document.write('<td><input type="text" name="Nome" size="20" tabindex="1"></td> </tr>');
        document.write('<tr> <td align="right">Cognome</td>');
        document.write('<td><input type="text" name="Cognome" size="20" tabindex="2"></td></tr>');
        document.write('<tr> <td align="right">Società</td>');
        document.write('<td><input type="text" name="Societa" size="20" tabindex="3"></td></tr>');
        document.write('<tr><td align="right">Indirizzo</td>');
        document.write('<td><input type="text" name="Indirizzo" size="30" tabindex="4"></td></tr>');
        document.write('<tr><td align="right">Comune e provincia</td>');
        document.write('<td><input type="text" name="Comune" size="20" tabindex="5"><input type="text" name="Provincia" size="4" tabindex="6" maxlength="2"></td></tr>');
        document.write('<tr><td align="right">CAP</td>');
        document.write('<td><input type="text" name="CAP" size="7" tabindex="7" maxlength="5"></td></tr>');
        document.write('<tr><td align="right">Nazione</td>');
        document.write('<td><input type="text" name="Nazione" size="20" tabindex="8"></td></tr>');
        document.write('<tr><td align="right">E-mail</td>');
        document.write('<td><input type="text" name="Email" size="20" tabindex="9"></td></tr>');
        document.write('</table></center></div>');
        document.write('<div align="center"><center><table border="1" cellspacing="1"><font>');
        while (puntatore<=lung) {
            if (string.charAt(puntatore) == "@") {
                cont++;
                document.write('<tr><td align="right">Articolo</td>');
                puntatore++;
                subpuntatore=puntatore;
                while (string.charAt(puntatore) != "@") puntatore++;
                document.write('<td align="right"><input type="text" name="Articolo'+cont+'" size="20"');
                document.write('value="'+string.substring(subpuntatore, puntatore)+'" onFocus="this.blur()">');
                puntatore++;
                subpuntatore=puntatore;
                while (string.charAt(puntatore) != "@") puntatore++;
                prezzo=parseInt(string.substring(subpuntatore, puntatore));
                document.write('<input type="hidden" name="Prezzo'+cont+'" value="'+prezzo+'"></td>');
                puntatore++;
                subpuntatore=puntatore;
                while (string.charAt(puntatore) != "@") puntatore++;
                quantit=parseInt(string.substring(subpuntatore, puntatore));
                document.write('<td align="right">Quantità</td>');
                document.write('<td align="right"><input type="text" name="Quant'+cont+'" size="5" ');
                document.write('value="'+quantit+'" onChange="update(this.form)" maxlength="3"></td>');
                puntatore++;
                subpuntatore=puntatore;
                while ((string.charAt(puntatore) != "@") && (string.charAt(puntatore) != "#")) puntatore++;
                document.write('<td align="right">Taglia</td>');
                document.write('<td align="right"><input type="text" name="Taglia'+cont+'" size="6" ');
                document.write('value="'+string.substring(subpuntatore, puntatore)+'"  maxlength="4"></td>');
                totale+=prezzo*quantit;
                document.write('<td align="right">Totale</td>');
                document.write('<td align="right">? <input type="text" name="Totale'+cont+'" size="12" ');
                document.write('value="'+punteggiatura(prezzo*quantit)+'" style="text-align: right" onFocus="this.blur()"></td>');
                puntatore--;
                document.write('</tr>');
                }
            puntatore++;
            }
    }
    totale+=20000
    if (stop != 1) {
        document.write('<tr><td align="right">Spedizione</td>');
        document.write('<td align="right"><select size="1" name="Trasporti" onChange="update(this.form)">');
        document.write('<option value="7">Si</option>');
        document.write('<option value="0">No</option>');
        document.write('</select></td><td colspan="4" align="right">&nbsp;</td>');
        document.write('<td align="right">Totale</td>');
        document.write('<td align="right">? <input type="text" name="TotaleTrasporti" size="12" value="'+punteggiatura(20000)+'" style="text-align: right" onFocus="this.blur()"></td>');
        document.write('</tr><tr><td colspan="6" align="right">&nbsp;</td>');
        document.write('<td align="right"><b>Totale</b></td>');
        document.write('<td align="right">? <input type="text" name="TotaleFinale" size="12" value="'+punteggiatura(totale)+'" style="text-align: right" onFocus="this.blur()"></td>');
        document.write('</tr></table></center></div>');
        document.write('<p align="center"><input type="button" value="Invia" name="B1" tabindex="10" onClick="controllo(this.form)">');
        document.write('<input type="reset" value="Reimposta" name="B2" tabindex=11"></p>');
    }
        
    document.write('</form>');
    </script>
    

    Praticamente è uno script che raccoglie dai cookies i dati salvati precedentemente e, quando non sono presenti dati, da un messaggio di errore.
    Vi prego, datemi una mano!!!
    Grazie!


  • Super User

    Ciao 🙂

    ti invito a leggere il regolamento in ogni sua parte.

    Con javascript non puoi inviare email direttamente, ma dovresti affidarti al client di posta dell'utente.
    Questo in molti casi, probabilmente la maggioranza, non è possibile, visto il client non è correttamente configurato.
    Devi necessariamente ricorrere a operazioni lato server: php, asp, cgi, ecc...


  • User

    Grazie per avermi risposto, anche se non è proprio la risposta che mi sarei aspettato.. 😞
    Premetto con il chiedere scusa se ho aperto 3 volte la stessa discussione, ma il mio browser sembrava non dare più segni di vita! (Avrò cliccato Invia una 30ina di volte e mi meraviglio che ne abbia accettate solo tre!)

    In realtà so bene come funziona l'invio delle email tramite php ma non ho la possibilità in quanto posso creare un sito solo html.:x
    Lo script di cui ho bisogno deve creare una email in outlook, o nel programma predefinito per l'invio della posta, contenente i valori immessi nei vari form..Nello script che ho postato esiste già, ma non funziona!!!:o

    Potete aiutarmi?

    Grazie mille.:)


  • Super User

    Ciao 🙂
    Il fatto è che per capire il funzionamento e sistemarlo ci vorrebbero ore.

    Hai già una mezza idea di quale sia il problema?

    Altrimenti che ne dici di partire come base da questo e poi adattarlo alle tue esigenze?
    http://www.shop.nopdesign.com/ (demo)
    http://www.nopdesign.com/freecart/ (pagina script)

    :ciauz:


  • User

    Ehilà, che bello scrpit! :figo: :yuppi:
    Peccato.. dovrò ricominciare tutto d'accapo ma.. ne varrà la pena! Grazie 1000! 😄


  • User

    Uno script davvero eccellente: ora però ho un altro problema.. :arrabbiato:
    Ho provato ad inserire nel sito lo script che mi hai consigliato (http://www.nopdesign.com/freecart/) ma non sono riuscito ugualmente a creare lo script che inviasse tutti i dati per email tramite il client di posta elettronica.
    Mi basta anche che lo script crei una nuova email, con testo il contenuto del cookie (l'ordine, in breve).
    Riusciresti ad aiutarmi? lo script è uguale a quello da te linkato.

    Grazie!!! 😢


  • User

    Devi necessariamente utilizzare php o asp.
    Non c'è modo di inviare mail con JS. Al massimo in Ajax, ma serve sempre uno script lato server che invia la mail...
    Sicuro che non hai modo di usare php? Solitamente tutti i web server supportano o php o asp o entrambi.


  • User

    Ciao Antonio, grazie per aver risposto. 😄
    Ti spiego subito: so che tramite front page (o semplicemente uno script), è possibile creare una funzione che crea una nuova email nel client con il testo o i valori inseriti nel modulo della pagina. Non c'è bisogno che la invii automaticamente, ma solo che imposti l'email con destinatario, oggetto e contenuto.
    Un esempio più semplice sarebbe un form con un campo testo: tramite la funzione submit del modulo, si creerebbe una email nel client predefinito di posta, con testo il contenuto del modulo. Tutto qui 🙂

    Help!!! 😢


  • User

    Ovviamente (?) ho la soluzione per te!

    Basta lanciare alla fine dello script
    window.location="mailto:[VARIABILE EMAIL]?subject=[VARIABILE OGGETTO MESSAGGIO]&body=[VARIABILE CORPO MESSAGGIO]";

    fai attenzione ad includere le variabili nella stringa nel modo corretto!

    Ciao

    PS: un ottimo generatore di link mailto lo trovi qui:

    http://www.cmg02.com/cg2/mailto.htm


  • User

    Ritornando alla proposta dello script lato server.... qual'è quello più semplice da inserire? Esiste qualche esempio già pronto?
    Vi ricordo ancora che devo inviare una serie di campi ad un indirizzo email.

    Grazie a tutti!!! 🙂


  • User

    @bubi said:

    Ritornando alla proposta dello script lato server.... qual'è quello più semplice da inserire? Esiste qualche esempio già pronto?
    Vi ricordo ancora che devo inviare una serie di campi ad un indirizzo email.

    Grazie a tutti!!! 🙂

    Ce ne sono finche vuoi di script già fatti.. Però devi decidere che linguaggio usare (se php,asp,asp.net,js ....)


  • User

    Il più semplice, ti prego!!! Ho già dei dati salvati in cookie da inviare.. (si tratta di un carrello in js)

    :perfavore:

    Proprio adesso ne ho trovato uno in php: ho installato il software EasyPHP come descritto nella guida GT, però quando avvio la funzione submit collegata all'azione send.pl, invece di inviare i dati, visualizzo tutto il codice!!!

    ES:

    #!/usr/bin/perl
    require 5.001;
    
    ########################################################################
    #                                                                      #
    #  User defined variables:                                             #
    #      $header        - string value containing the complete           #
    #                       path of the HTML page header                   #
    #      $footer        - string value containing the complete           #
    #                       path of the HTML page footer                   #
    #      $mailprogram   - string value containing the complete path to   #
    #                       the sendmail binary on the system.             #
    #      $youremail     - string value containing the email address to   #
    #                       send catalog orders in EMAIL or BOTH modes     #
    #                       **Don't forget to put a \ before the @ in your #
     
    etc...
    
    
    

    Cosa non va? Ho salvato tutti i file nella cartella www!!! :bho: