Comprobar un formulario

izk666
20 de Enero del 2005
Wenas. Soy nuevo por aki, y tb soy novato en el tema de php.

Tengo una duda k no consigo resolver ni he encontrado nada por internet...

Quiero hacer un formulario con diversos campos: Nombre, version, Descripcion, etc... y una vez acabado, quiero k la pagina compruebe si hay un dato mal, en cuyo caso, me gsutaria que apareciera encima del formulario un texto indicando dónde está el error, pero sin que se borren los datos del formulario.

Mi pregunta es cómo poner dicho "letrerito" de error.

Chejov
20 de Enero del 2005
<?
if ($_SERVER['REQUEST_METHOD']=='POST') {
foreach($_POST as $key => $value) {
$value=trim($value);
$value=htmlspecialchars($value,ENT_QUOTES);
$_POST[$key]=$value;
$msg[$key]=$value;
}
//compruebas si hay un dato mal. Si hay escribes en $err variable

$err='';
if (!$name) $err.="You forgot write name<br>";
if (!$notes) $err.="you forgot write note!<br>";
if (strlen($email) > 50) $err.="Too long e-mail...<br>";
// y mucho otros compruebas

$email_ok=eregi("^([_.0-9a-z-][email protected])([0-9a-z][0-9a-z-]+.)+([a-z]{2,4})$", $email);
if (!$email_ok && $email) $err.="E-mail have error !<br>";
//Si no hay errores todo esta bien
if (!$err) {
$s=$msg['name']."|".$msg['email']."|".$msg['notes']."|".time()."n";
$fp=fopen("gbook.txt","a");
fwrite($fp,$s);
fclose($fp);
//Luego hacemmos redirect de pagina
Header("Location: ".$_SERVER['PHP_SELF']);
//y por cierto finalizamos script
exit;
}
//si habian errores en forma no escribimos en archivo nada
// script no finaliza
} else {
// Si no es POST
$_POST['name'] = $_POST['email'] = $_POST['notes'] ='';
}
?>
<html>
<head></head>
<body>
<? if ($err) echo '<font color=red><b>'.$err.'</b></font>'; ?>
<form action="<? echo $_SERVER['PHP_SELF'] ?>" method="POST"><br>
Name: <input type="text" name="name" value="<? echo $_POST['name'] ?>"><br>
Email: <input type="text" name="email" value="<? echo $_POST['email'] ?>"><br>
Notes: <textarea rows="3" cols="30" name="notes"><? echo $_POST['notes'] ?></textarea><br>
<input type="submit" name="submit">
</form>
</body>
</html>

ME parece que es bastante claro?!

Suerte.