• Moderatore

    Prova a cambiare questa:

    <input type="submit" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />

    con questa:

    <input type="button" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />


  • User Newbie

    @Shad said:

    Prova a cambiare questa:

    <input type="submit" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />

    con questa:

    <input type="button" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />

    Cambiando il codice che mi hai detto tu nella mail non compaiono i campi compilati... cosa devo modificare?

    Ti metto di nuovo i codici:

    $(document).ready(function(){
        $("#invia").click(function(){
        
        //Recuperiamo tutte le variabili
            var valid = '';
            var isr = ' <p>&Eacute; richiesto';
            var name = $("#nome").val();
            var marca = $("#marca option:selected").val();
            var mail = $("#email").val();
            var subject = $("#oggetto").val();
            var messaggio = $("#messaggio").val();
        //Eseguiamo una serie di controlli
            if (name.length<1) {
                valid += isr+' un nome valido</p>';
            }
            if (!mail.match(/^([a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,4}$)/i)) {
                valid += isr+' un indirizzo e-mail valido</p>';
            }
            if (marca.length<1) {
                valid += isr+' una marca valida</p>';
            }
            if (subject.length<1) {
                valid += isr+' un oggetto valido</p>';
            }
            
        //Se i controlli non vengono superati, appare il messaggio di errore.
            if (valid!='') {
                $("#risposta").fadeIn("slow");
                $("#risposta").html("<p><b>Errore:</b></p>"+valid);
                $("#risposta").css("background-color","#FFFFF");
                $("#risposta").css("color","rgba(116,0,1,1.00)");
            }
            //Se i controlli vengono superati, compare un messaggio di invio in corso
            else {
                var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&messaggio=' + encodeURIComponent(messaggio);
                $("#risposta").css("display", "block");
                $("#risposta").css("background-color","#FFFFF");
                $("#risposta").css("color"," rgba(66,66,66,1.00)");
                $("#risposta").html("<p>Invio del messaggio in corso..</p>");
                $("#risposta").fadeIn("slow");
                setTimeout("send('"+datastr+"')",2000);
            }
            return false;
        });
    });
    //Creazione della funzione di invio. Si baserà sul nostro file php "mail.php".
    function send(datastr){
        $.ajax({    
            type: "POST",
            url: "mail.php",
            data: datastr,
            cache: false,
            success: function(html){
            $("#risposta").fadeIn("slow");
            $("#risposta").html(html);
            $("#risposta").css("background-color","#FFFFF");
            $("#risposta").css("color"," rgba(107,130,39,1.00)");
            setTimeout('$("#risposta").fadeOut("slow")',2000);
        }
        });
    }
    
    
    

    [PHP]<?php
    //Recuperiamo tutte le variabili
    $mail = $_POST['email'];
    $name = $_POST['nome'];
    $subject = $_POST['oggetto'];
    $marca = $_POST['marca'];
    $messaggio = $_POST['messaggio'];
    $ip = $_SERVER['REMOTE_ADDR'];

    //Qui andrà inserito il tuo indirizzo e-mail
    $to = "[email protected]";

    //Creazione del mesaggio da inviare
    $message = "<p> <strong>Nome:</strong> ".$name." </p><p><strong>Mail:</strong> ".$mail." </p> <p><strong>Oggetto:</strong> ".$subject." </p><p><strong>Marca:</strong> ".$marca." </p>";
    $message .= "<p> <strong>Messaggio:</strong> ".$messaggio."<br /><br /></p>";
    $message .= "<p>IP: ".$ip."<br /></p>";

    $headers = "From: $mail \n";
    $headers .= "Reply-To: $mail \n";
    $headers .= "MIME-Version: 1.0 \n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1 \n";

    //Se l'e-mail viene spedita correttamente, compare un messaggio di avvenuto invio
    if(mail($to, $subject,$message, $headers)){
    echo "<p>Messaggio inviato con successo!</p>";
    }
    //Altrimenti un messaggio di errore
    else{
    echo "<p>Ci sono stati degli errori nell'invio della e-mail. Riprova</p>";
    }
    ?>

    [/PHP]

    [HTML]<form id="formail" method="post" action="" name="formail">
    <div id="risposta">
    </div>
    <div class="input-field">
    <p>Nome:</p>
    <input type="text" id="nome" class="form-control" name="nome" /><br />
    </div>
    <div class="input-field">
    <p>Marca:</p>
    <select id="marca" class="form-control" name="marca">
    <option value="FIAT">FIAT</option>
    <option value="LANCIA">LANCIA</option>
    <option value="ABART">ABART</option>
    <option value="ALFA">ALFA</option>
    </select>
    </div>
    <div class="input-field">
    <p>E-mail:</p>
    <input type="email" id="email" class="form-control" name="email"/><br />
    </div>
    <div class="input-field">
    <p>Oggetto:</p>
    <input type="text" id="oggetto" class="form-control" name="oggetto"/><br />
    </div>
    <div class="input-field">
    <p>Messaggio:</p>
    <textarea id="messaggio" class="form-control" name="messaggio" rows="5" cols="4"></textarea><br />
    </div>
    <input type="button" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />
    </form> [/HTML]


  • Moderatore

    Togli l'action del form e per inviare il form non usare un campo INPUT.. Ad esempio se usi Bootstrap (sembra quello dal nome delle classi) utilizza il tag <a>.


  • User Newbie

    @MiWebDesign said:

    Togli l'action del form e per inviare il form non usare un campo INPUT.. Ad esempio se usi Bootstrap (sembra quello dal nome delle classi) utilizza il tag <a>.

    Riesci a farmi un esempio di come modificheresti il campo input?
    Grazie mille!


  • Moderatore

    Per trasformare il tuo campo input in un tag <a> scrivi così:

    [HTML]
    <a class="btn btn-blue btn-effect" id="invia">INVIA</a>
    [/HTML]

    In questo modo non sei vincolato dal FORM in quanto non è un INPUT SUBMIT.


  • User Newbie

    @MiWebDesign said:

    Per trasformare il tuo campo input in un tag <a> scrivi così:

    [HTML]
    <a class="btn btn-blue btn-effect" id="invia">INVIA</a>
    [/HTML]

    In questo modo non sei vincolato dal FORM in quanto non è un INPUT SUBMIT.

    Ora verifica tutto correttamente sulla pagina, ma quando ricevo la mail i campi non sono compilati..solo il messaggio compare..cosa può essere?


  • Moderatore

    Beh... Prima mandi variabili di nome: name,mail,subject tramite AJAX

    ** var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&messaggio=' + encodeURIComponent(messaggio);

    E poi vorresti recuperle con i nomi:

    $mail = $_POST['email'];
    $name = $_POST['nome'];
    $subject = $_POST['oggetto'];

    **
    Presta maggiore attenzione...il nome della variabile che cerchi di recuperare tramite PHP è quella contenuta dentro POST e non quella preceduta dal simbolo del dollaro.


  • User Newbie

    @MiWebDesign said:

    Beh... Prima mandi variabili di nome: name,mail,subject tramite AJAX

    ** var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&messaggio=' + encodeURIComponent(messaggio);

    E poi vorresti recuperle con i nomi:

    $mail = $_POST['email'];
    $name = $_POST['nome'];
    $subject = $_POST['oggetto'];

    **
    Presta maggiore attenzione...il nome della variabile che cerchi di recuperare tramite PHP è quella contenuta dentro POST e non quella preceduta dal simbolo del dollaro.

    Ok, ora vedo di nuovo e-mail e nome..ma l'oggetto e la marca no..come posso fare? cosa continuo a sbagliare?

    Grazie! Ho poca conoscenza di php e java purtroppo...


  • Moderatore

    Beh leggendo il tuo codice jQuery con cui fai la chiamata AJAX la marca neanche l'hai messa è normale che non te la recupera il PHP

    Non voglio postarti il codice già pronto altrimenti non capisci dove sbagli e non potrai migliorarti, ti dico ciò che devi fare e perchè sbagli:

    Vedi questa stringa? Serve a passare al file PHP le variabili che hai recuperato dai campi del FORM:

    **var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&messaggio=' + encodeURIComponent(messaggio);

    **La marca non l'hai messa, quindi inserisci anche quella variabile.. Sembra un casino ma non devi leggerlo per come è scritto cerca di tradurlo in italiano

    "Creo la variabile datastr, gli assegno il nome alla variabile POST che recupererò tramite PHP e il valore della variabile Javascript.. E aggiungo una variabile mail, la cui assegno il valore della variabile Javascript mail... Ecc..."

    I nomi delle variabili che ti troverai in PHP sono quelli messi tra gli apici, quindi in questo caso avrai:

    $_POST["name"] - $_POST["mail"] - $_POST["subject"] ... ecc


  • User Newbie

    @MiWebDesign said:

    Beh leggendo il tuo codice jQuery con cui fai la chiamata AJAX la marca neanche l'hai messa è normale che non te la recupera il PHP

    Non voglio postarti il codice già pronto altrimenti non capisci dove sbagli e non potrai migliorarti, ti dico ciò che devi fare e perchè sbagli:

    Vedi questa stringa? Serve a passare al file PHP le variabili che hai recuperato dai campi del FORM:

    **var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&messaggio=' + encodeURIComponent(messaggio);

    **La marca non l'hai messa, quindi inserisci anche quella variabile.. Sembra un casino ma non devi leggerlo per come è scritto cerca di tradurlo in italiano

    "Creo la variabile datastr, gli assegno il nome alla variabile POST che recupererò tramite PHP e il valore della variabile Javascript.. E aggiungo una variabile mail, la cui assegno il valore della variabile Javascript mail... Ecc..."

    I nomi delle variabili che ti troverai in PHP sono quelli messi tra gli apici, quindi in questo caso avrai:

    $_POST["name"] - $_POST["mail"] - $_POST["subject"] ... ecc

    Grazie, infatti preferisco capire dove è l'errore.

    Ho inserito questo codice:
    **var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&marca=' + marca + '&messaggio=' + encodeURIComponent(messaggio); **

    ma ora non mi compare più neanche "invio in corso".
    Con questo codice invece, funzionava ma mancavano nella mail i campi compilati della marca e dell'oggetto:

    ** var isr = ' <p>É richiesto';
    var nome = $("#nome").val();
    var marca = $("#marca option:selected").val();
    var email = $("#email").val();
    var subject = $("#subject").val();
    var messaggio = $("#messaggio").val();
    **

    Cosa sbaglio?