La mejor forma de validar un formulario es incluir validaciones y mensajes en Javascript, igual que en PHP.
El algoritmo más común es:
Código PHP:
Ver original<?php
// Inicialización de variables
$nombre = '';
$edad = '';
// .........
// Verificar si se va a procesar el formulario
if(isset($_POST['nombre'])) { // Asignación desde $_POST
$edad = intval($_POST['edad']); // .............
// Validación de datos
$errores['nombre'] = 'Teclea tu nombre, usando 3 o más caracteres';
}
if($edad < 5) {
$errores['edad'] = '¿En serio sabes escribir sin haber cumplido 5 años?';
}
// ...............
if(count($errores) = 0) { // Aquí procesas el formulario
}
}
// Aquí va el formulario:
?>
<form method="post" action="index.php">
Nombre: <input type="text" name="nombre" value="<?php echo $nombre; ?>" /><br />
<?php
if(isset($errores['nombre'])) { echo $errores['nombre'];
}
?>
</form>
Harías algo similar para todos los campos.
Ese sería el flujo a seguir para poder mantener valores. Si programas con algún patrón como MVC solo se necesitarían algunas adaptaciones; igual si prefieres usar variables de sesión para mantener los valores; eso ya es cosa de gustos.