Salve a tutti!
Scusate se la domanda è da considerarsi stupida o se già si è trattato questo argomento in qualche altra parte del forum,
ma sono un neofita sia di php (ho iniziato da una settimana) che del forum stesso!
Ecco il mio problema:
Ho realizzato un modulo per l'invio di suggerimenti.
Il form funziona benissimo, però vorrei apportare alcuni miglioramenti che non so fare...
Quando si invia il modulo e ci sono degli errori appare un punto interrogativo accanto al campo sbagliato o da compilare + un messaggio di errore. Giusto come voglio!
Il problema sta nel fatto che la pagina viene caricata "dall'alto" come se si aprisse un'altra pagina e non nel punto in cui è presente il modulo e inoltre vengono cancellati tutti i campi, anche quelli compilati correttamente. Io invece vorrei che i campi compilati senza errori non si cancellassero.
Qualcuno sa aiutarmi a risolvere questi problemi?
Di seguito c'è il codice della pagina php che gestisce l'invio dei dati e il codice del modulo html.
Grazie.
MrSifter
PS Ho pensato che forse si poteva risolvere sostituendo in Location al posto di index.php qualcosa del genere "javascript:history.go(-1);"...
Ma non sono riuscito a far funzionare lo script!
>>>> SCRIPT DI GESTIONE chiamato: sugg.php
Codice PHP:
<?php
if (empty($_POST['cognome']) ){ // controllo se il campo nome-cognome è stato compilato
$errore1 = 1;
}
if (empty($_POST['email']) ){ // controllo se il campo email è stato compilato
$errore2 = 1;
}
if (!eregi("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $_POST['email'])){ // controllo se il formato dell'email è corretto
$errore3 = 1;
}
if (empty($_POST['messaggio']) ){ // controllo se è stato scritto qualcosa
$errore4 = 1;
}
if (($errore1 == 1) or ($errore2 == 1) or ($errore3 == 1) or ($errore4 == 1))
header("Location: index.php?errore1=".$errore1."&errore2=".$errore2."&errore3=".$errore3."&errore4=".$errore4);
else {
$destinatario = "email@email.it";
$mail_subject = "Suggerimento ricevuto tramite il sito [url]www.sito.it[/url]";
$mail_body = "
<font color=#000000>Mittente: [b]$cognome[/b]</font></p>
<font color=#000000>MESSAGGIO:
$messaggio</font></p>";
// Intestazioni HTML
$mail_in_html = "MIME-Version: 1.0\r\n";
$mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
$mail_in_html .= "From: <$mail_from>";
// Processo di invio
if (mail($destinatario, $mail_subject, $mail_body, $mail_in_html))
{
$invio_riuscito = 1;
header("Location: index.php?invio_riuscito=".$invio_riuscito); // se il messaggio viene inviato con successo appare la scritta: << Grazie per averci inviato un suggerimento! >>
}
}
?>
>>>> MODULO chiamato: index.php
Codice PHP:
<?php
echo "
<form method=\"post\" action=\"sugg.php\">
<table width=\"200\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
<tr><td valign=\"top\" width=\"230\">
<font class=\"testo-04\">[b]Nome e Cognome:[/b]</font>
"; if ($_GET['errore1']==1) echo "<font size=\"4\" face=\"verdana\" color=\"red\">[b]![/b]</font>"; else echo ""; echo"
</td>
</tr>
<tr><td valign=\"top\" width=\"230\">
<input name =\"cognome\" type=\"text\" class=\"inputH\" id=\"cognome\" size=\"32\" maxlength=\"40\">
</td>
<td> </TD>
</tr>
<tr><td valign=\"top\" width=\"230\">
<font class=\"testo-04\">[b]Indirizzo Email:[/b]</font>
"; if ($_GET['errore2']==1 or $_GET['errore3']==1) echo "<font size=\"4\" face=\"verdana\" color=\"red\">[b]![/b]</font>"; else echo ""; echo"
</td>
</tr>
<tr><td valign=\"top\" width=\"230\">
<input name =\"email\" type=\"text\" class=\"inputH\" id=\"email\" size=\"32\" maxlength=\"40\">
</td>
</td>
<td> </TD>
</tr>
<tr>
<td valign=\"top\" width=\"230\">
<font class=\"testo-04\">[b]Invia suggerimenti, consigli, critiche, ...[/b]</font>
"; if ($_GET['errore4']==1) echo "<font size=\"4\" face=\"verdana\" color=\"red\">[b]![/b]</font>"; else echo ""; echo"
</td>
</tr>
<tr><td valign=\"top\" width=\"230\">
<textarea name=\"messaggio\" cols=\"32\" rows=\"5\" id=\"messaggio\" class=\"textareaH\"></textarea>
</td></tr>
<tr><td valign=\"top\" width=\"230\">
<center>
<input type=\"submit\" value=\"Invia\" class=\"bottoneH\">
<input type=\"reset\" value=\"Cancella\" class=\"bottoneH\">
</center>
</td></tr>
<tr><td>
"; if ($_GET['errore1']==1 or $_GET['errore2']==1 or $_GET['errore4']==1) echo "<font size=\"2\" face=\"verdana\" color=\"red\">[b]devi compilare tutti i campi[/b]</font>"; else echo ""; echo"
</td></tr>
<tr><td>
"; if ($_GET['errore3']==1) echo "<font size=\"2\" face=\"verdana\" color=\"red\">[b]Formato email non corretto![/b]</font>"; else echo ""; echo"
</td></tr>
<tr><td>
"; if ($_GET['invio_riuscito']==1) echo "<font size=\"2\" face=\"verdana\" color=\"red\">[b]Grazie per averci inviato un suggerimento![/b]</font>"; else echo ""; echo"
</td></tr>
</table>
</form>";
?>