Allora ragazzi, ho fatto prove tutta la mattina e ho scritto questo codice.
Ho trasformato la mia validazione in una funzione e sto cercando di usare le sessioni per mantenere i dati nel form nel caso la validazione fallisca. Il problema è che li mantiene anche troppo, nel senso che vorrei che nel caso non ci siano errori dopo che avviene l'inserimento i campi del form venissero resettati invece rimangono i dati appena inseriti. Mi dite cosa sbaglio.
Questo è il form.
Codice PHP:
<form action="elaboraform2.php" method="post">
nome: <input type="text" name="nome" value="<?php echo isset($_SESSION['nome']) ? $_SESSION['nome'] : '' ?>" />
numero: <input type="text" name="numero" value="<?php echo isset($_SESSION['numero']) ? $_SESSION['numero'] : '' ?>" />
data: <input type="text" name="data" value="<?php echo isset($_SESSION['data']) ? $_SESSION['data'] : '' ?>" />
<input type="submit" value="Invia">
e questa è la pagina che controlla i dati e poi esegue la query.
Codice PHP:
function valida() {
$mesErr = '';
$errori = 0;
$_SESSION['nome'] = $_POST['nome'];
if (!preg_match("#^[a-z]{5,10}$#i",$_POST['nome']))
{
$mesErr.='Il nome deve contenere solo lettere (minimo 5 e massimo 10)
';
$errori++;
}
$_SESSION['numero'] = $_POST['numero'];
if ($_POST['numero'] <1 || $_POST['numero'] > 10)
{
$mesErr.='il numero deve essere tra 1 e 10
';
$errori++;
}
$_SESSION['data'] = $_POST['data'];
if (!preg_match("#[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}#",$_POST['data']))
{
$mesErr.= 'non è una data valida
';
$errori++;
}
if ($errori > 0)
{
echo $mesErr.'
';
echo "<a href=\"invioform2.php\">torna alla pagina di inserimento</a>";
exit;
}
else
{
$query = "insert into validazioneform(nome,numero,miadata) values('$_SESSION[nome]',$_SESSION[numero],'$_SESSION[data]') ";
mysql_query($query) or die(mysql_error());
if (mysql_affected_rows() > 0)
header("Location: inserimentook2.php");
else
echo 'no inserimento';
}
}
valida();
ovviamente in tutte e due le pagine c'è il session_start() in cima.
Confido in voi.