Problemi con ricezione mail dal form

Francy_F

Nuovo Utente
22 Mag 2015
5
0
0
Ciao a tutti,
ho un problema con l'invio delle mail dal form. Volevo creare un form per la richiesta preventivi, inserendo quindi il tag <select>. Quando arriva la mail compare tutto, meno la scelta fatta nella parte <select>.


Vi inserisco di seguito i codici:


Questo invece è la parte html:
HTML:
<form id="formail" method="post" action="">    
<div id="risposta" style="width:50%; text-align: center; ">
</div>
<div class="input-field">    
<p>Nome:</p>    
<input type="text" id="nome" class="form-control" name="nome"  value="" /><br />
</div>
<div class="input-field">    
<p>Marca:</p>    
<select id="marca" class="form-control" name="marca" value="">      
<option value="1">FIAT</option>      
<option value="2">LANCIA</option>      
<option value="3">ABART</option>      
<option value="4">ALFA</option>    
</select>
</div>
<div class="input-field">
    <p>E-mail:</p>    
<input type="text" id="email" class="form-control" name="email"  value="" /><br />
</div>
<div class="input-field">    
<p>Oggetto:</p>    
<input type="text" id="oggetto" class="form-control" name="oggetto"  value="" /><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="submit" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />    
</form>


Questo invece è la parte Java:
Codice:
$(document).ready(function(){
    $("#invia").click(function(){
    
    //Recuperiamo tutte le variabili
        var valid = '';
        var isr = ' <p>&Eacute; richiesto';
        var name = $("#nome").val();
        var marca = $("#marca").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);
    }
    });
}

Ed infine la parte PHP:
PHP:
 <?php
//Recuperiamo tutte le variabili
    $mail = $_POST['mail'];
    $name = $_POST['name'];
    $subject = $_POST['subject'];
    $text = $_POST['messaggio'];
    $ip = $_SERVER['REMOTE_ADDR'];
    
//Qui andrà inserito il tuo indirizzo e-mail
$to = "[email protected]";


//Creazione del mesaggio da inviare
$message = "Hai ricevuto una e-mail da: ".$name.", ".$mail.".<br />";
$message .= "Messaggio: <br />".$text.", ".$marca."<br /><br />";
$message .= "ti ha contattato per l'articolo $marca";
$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>";
}
?>


Potete aiutarmi?
grazie!
 
PHP:
 <?php 
//Recuperiamo tutte le variabili 
    $mail = $_POST['mail']; 
    $name = $_POST['name']; 
    $subject = $_POST['subject']; 
    $text = $_POST['messaggio']; 
    $ip = $_SERVER['REMOTE_ADDR'];
Anzitutto mi pare tu non abbia ricevuto la variabile.. dovrebbe esserci qualcosatipo:
PHP:
$marca = $_POST['marca'];

Altra cosa, se nel form fai una cosa del genere:

PHP:
<option value="1">FIAT</option>      
<option value="2">LANCIA</option>      
<option value="3">ABART</option>      
<option value="4">ALFA</option>

Se un utente sceglie FIAT il valore che viene passato è 1, quindi nella mail riceverai marca 1.
Io avrei fatto così:
PHP:
<option value="FIAT">FIAT</option>      
<option value="LANCIA">LANCIA</option>      
<option value="ABART">ABART</option>      
<option value="ALFA">ALFA</option>
 
Anzitutto mi pare tu non abbia ricevuto la variabile.. dovrebbe esserci qualcosatipo:
PHP:
$marca = $_POST['marca'];

Altra cosa, se nel form fai una cosa del genere:

PHP:
<option value="1">FIAT</option>      
<option value="2">LANCIA</option>      
<option value="3">ABART</option>      
<option value="4">ALFA</option>

Se un utente sceglie FIAT il valore che viene passato è 1, quindi nella mail riceverai marca 1.
Io avrei fatto così:
PHP:
<option value="FIAT">FIAT</option>      
<option value="LANCIA">LANCIA</option>      
<option value="ABART">ABART</option>      
<option value="ALFA">ALFA</option>


Avevo provato anche richiamando la variabile ma niente.. Per quanto riguarda i valori lo so, era solo una prova per la mail :)

hai qualche altro suggerimento?

Grazie!
 
Avevo provato anche richiamando la variabile ma niente.. Per quanto riguarda i valori lo so, era solo una prova per la mail :)

hai qualche altro suggerimento?

Grazie!

Prova a togliere il value sostituisci il form con questo:

PHP:
<form id="formail" method="post" action="">    
<div id="risposta" style="width:50%; text-align: center; ">
</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="submit" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />    
</form>

Ho notato che non hai puntato l'action..
Ovviamente dall'altra parte devi avere "obbligatoriamente" :
PHP:
 $mail = $_POST['mail']; 
 $name = $_POST['name']; 
 $subject = $_POST['subject']; 
 $marca = $_POST['marca']; 
 $text = $_POST['messaggio']; 
 $ip = $_SERVER['REMOTE_ADDR'];
 
Ultima modifica:
Prova a togliere il value sostituisci il form con questo:

PHP:
<form id="formail" method="post" action="">    
<div id="risposta" style="width:50%; text-align: center; ">
</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="submit" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />    
</form>

Ho notato che non hai puntato l'action..
Ovviamente dall'altra parte devi avere "obbligatoriamente" :
PHP:
 $mail = $_POST['mail']; 
 $name = $_POST['name']; 
 $subject = $_POST['subject']; 
 $marca = $_POST['marca']; 
 $text = $_POST['messaggio']; 
 $ip = $_SERVER['REMOTE_ADDR'];



Di nuovo niente.
Hai mica i codici un form funzionante (con tag select) da farmi vedere? in modo da capire dove sbaglio, perchè tutte le altre variabili le vedo correttamente (testo, oggetto nome), solo la scelta del select non vedo.
 
Perdonami, avevo dato troppe cose per scontate.. Avevi fatto anche qualche errore nel richiamare le variabili..
Ora funziona certamente l'ho appena testato e i dati arrivano tutti..

PHP:
<form id="formail" method="post" action="">     
<div id="risposta" style="width:50%; text-align: center; "> 
</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="submit" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />     
</form>
Avevi sbagliato alcuni di questi:
PHP:
$mail = $_POST['mail'];  
$name = $_POST['nome'];  
$subject = $_POST['oggetto'];  
$marca = $_POST['marca'];  
$text = $_POST['messaggio'];  
$ip = $_SERVER['REMOTE_ADDR'];
 
Perdonami, avevo dato troppe cose per scontate.. Avevi fatto anche qualche errore nel richiamare le variabili..
Ora funziona certamente l'ho appena testato e i dati arrivano tutti..

PHP:
<form id="formail" method="post" action="">     
<div id="risposta" style="width:50%; text-align: center; "> 
</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="submit" class="btn btn-blue btn-effect" id="invia" name="invia" value="INVIA" />     
</form>
Avevi sbagliato alcuni di questi:
PHP:
$mail = $_POST['mail'];  
$name = $_POST['nome'];  
$subject = $_POST['oggetto'];  
$marca = $_POST['marca'];  
$text = $_POST['messaggio'];  
$ip = $_SERVER['REMOTE_ADDR'];

Ora succede una cosa strana.
Prima, quando inviavo la mail senza specificare nulla nella parte action dell'html funzionava nel modo corretto (senza però mostrare la scelta delle select). Ora, se non specifico la parte action non vedo la mail che inseriscono e la scritta "messaggio inviato" compare in un'altra pagina.

Come faccio a far funzionare tutto correttamente? è possibile che ci sia qualche errore nel java?

Grazie mille per il momento! :)
 
Come faccio a far funzionare tutto correttamente? è possibile che ci sia qualche errore nel java?

Grazie mille per il momento! :)

Purtroppo in campo Java non sono molto pratico, ti conviene attendere qualcuno più addentrato in questo linguaggio.. Comunque per quanto riguarda il form in php ( mettendo l'action ) in questo modo funziona.
 
Purtroppo in campo Java non sono molto pratico, ti conviene attendere qualcuno più addentrato in questo linguaggio.. Comunque per quanto riguarda il form in php ( mettendo l'action ) in questo modo funziona.

Grazie mille! Prima ti ho detto che non funzionava correttamente.. che mancavano dei pezzi, ma era il mio cervello che chiedeva pietà! Riprovando è tutto corretto e (mettendo l'action) funziona! Ho solo più una piccola domanda, l'action deve essere per forza .php?

Grazie davvero per tutto l'aiuto!! :D
 

Discussioni simili