Si tu haces algo tipo:
Código PHP:
<html>
<head>
</head>
<body>
texto1.
<?
// if ($submit )
//validaciones if (....)
// muestras texto
} else {
<form action="esta misma página.php" .. tu formulario>
</form>
}
?>
texto2
</body>
</html>
vas a ver siempre ese texto1 y texto2 por qué todo lo haces sobre el mismo script ..
Tendrías que generar "dos" páginas HTML completas en ese mismo script para los dos casos:
a) Validación incorrecta con el mensaje X
b) presentar formulario
y si corresponde .. tambien una "tercera" página con el resultado del proceso de los datos del formulario ..
Código PHP:
<?
if ($submit){
// validaciones
if (.....){
<html>
tu mensaje de error...
</html>
}
// otra validacion
if (....){
<html>
otro mensaje de error
</html>
}
} else {
<html>
<form ...>
</form>
</html>
}
Todo esto se pued ir refinando con funciones que llame a tu "cabecera y pie" de página por ejemplo ..
Pero, para estos casos vale más la pena mandar tu formulario a otra página que va a contener sólo el código de la validación y proceso (en el action)
así tendrías
procesar.php y tu formulario.php .. al validar en procesar.php (ahí apuntarías tu action del formulario) .. ya vas a generar una pagina nueva entera (incluso puedes "lanzar" vía javacript una ventana nueva y hacer ahí el proceso y mostrar los mensaje de error si se producen .. )
Para volver a tu formulario.php .. usarías la técnica descrita por X3mdesing donde se propagan las variables que enviastes a "procesar.php" al formulario.php para reestablecer sus valores originales y correjir el error .. Incluso el mensaje de error podrías mostrarlo sobre el própio formulario.
Un saludo,