PDA

View Full Version : [php] Azione successiva modulo invio mail


LuPellox85
24-03-2013, 20:21
salve a tutti, ho un piccolo problemino con il form invio mail, in pratica vorrei che all'invio della mail apparisse un popup e si pulisse il form, senza cambiare pagina, invece accade che si apre il popup e cambia anche la pagina, vi linko la pagina incriminata
http://www.greenstageradio.it/index.php?option=com_wrapper&view=wrapper&Itemid=115

che come vedete è molto semplice e il codice php usato:

<?php
// L'INDIRIZZO DEL DESTINATARIO DELLA MAIL
$to = "diretta@greenstageradio.it";

// IL SOGGETTO DELLA MAIL
$subject = "Mail diretta";

// COSTRUZIONE DEL CORPO DEL MESSAGGIO
$body = "Contenuto del modulo:\n\n";
$body .= "Nome: " . trim(stripslashes($_POST["nome"])) . "\n";
$body .= "Messaggio: " . trim(stripslashes($_POST["messaggio"])) . "\n";

// INTESTAZIONI SUPPLEMENTARI
$headers = "From: Modulo richiesta inserimento rotazione GreenStage Radio";

// INVIO DELLA MAIL
if(@mail($to, $subject, $body, $headers)) { // SE L'INOLTRO E' ANDATO A BUON FINE...

echo "<script type='text/javascript'>alert('Mail inviata con successo!');</script>";

} else {// ALTRIMENTI...

echo "<script type='text/javascript'>alert('mail non inviata!');</script>";

}

?>

newsocialifecom
24-03-2013, 22:07
Salve LuPellox85,
quello che vuoi fare tu si chiama ajax, una tecnica che unisce php e javascript tramite una richiesta. Effettuare una richiesta ajax è semplicissimo e non richiede un grande sforzo. Ti scrivo un semplice script che client e server.
mailer.php
<?php
// L'INDIRIZZO DEL DESTINATARIO DELLA MAIL
$to = "diretta@greenstageradio.it";

// IL SOGGETTO DELLA MAIL
$subject = "Mail diretta";

// COSTRUZIONE DEL CORPO DEL MESSAGGIO
$body = "Contenuto del modulo:\n\n";
$body .= "Nome: " . trim(stripslashes($_POST["nome"])) . "\n";
$body .= "Messaggio: " . trim(stripslashes($_POST["messaggio"])) . "\n";

// INTESTAZIONI SUPPLEMENTARI
$headers = "From: Modulo richiesta inserimento rotazione GreenStage Radio";

// INVIO DELLA MAIL
if(@mail($to, $subject, $body, $headers)) // SE L'INOLTRO E' ANDATO A BUON FINE...
echo "Mail inviata con successo!";
else // ALTRIMENTI...
echo "Mail non inviata!";
?>
Il codice di mailer.php è il tuo, ho semplicemente rimosso ciò che è superfluo.
sender.html
<form id="mailer">
<!-- Il tuo form -->
<input type="button" id="submitme" value="Invia!"> <!-- è importante che non sia di tipo submit -->
</form>
<!-- In fondo alla pagina: ( prima della chiusura di body ) -->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(function() {
$("#submitme").click(function() {
$.post("mailer.php", $("#mailer").serialize(), function(response) {
alert(response);
});
});
});
</script>
Spero di esserti stato di aiuto. Per eventuali chiarimenti sono sempre a disposizione

LuPellox85
24-03-2013, 22:48
una bomba, grazie :D
per pulire i campi una volta inviata cosa devo aggiungere?

newsocialifecom
24-03-2013, 22:56
devi semplicemente cambiare il codice in javascript:
<script>
$(function() {
$("#submitme").click(function() {
$.post("mailer.php", $("#mailer").serialize(), function(response) {
alert(response);
$("#mailer").each(function() { this.reset(); });
});
});
});
</script>

LuPellox85
24-03-2013, 23:13
devi semplicemente cambiare il codice in javascript:
<script>
$(function() {
$("#submitme").click(function() {
$.post("mailer.php", $("#mailer").serialize(), function(response) {
alert(response);
$("#mailer").each(function() { this.reset(); });
});
});
});
</script>


Grazie mille ancora :)

newsocialifecom
25-03-2013, 13:37
Di nulla :)