Hola, puedes hacerlo como lo dice PabloP y asi le quitarías trabajo al servidor. Pero... ¿qué pasa si el cliente no tiene JS?
Te mostraré un ejemplo con solo dos campos, nombre y email. Tu luego te encargas de enriquecerlo, es solo para que tengas una idea.
register.php
Código HTML:
<form method="post" action="check.php">
<input type="text" name="nombre" value="<?php echo isset($_GET['nombre'])?$_GET['nombre']:''; ?>" />
<input type="text" name="email" value="<?php echo isset($_GET['email'])?$_GET['email']:''; ?>" />
<input type="submit" name="submit" value="enviar" />
</form>
<?php echo $_GET['buffer']; ?>
check.php
Código PHP:
$buffer=''; //inicializamos el buffer de errores
$buffer.=empty($_POST['nombre'])?'Debe escribir un nombre.<br />':'';
$buffer=empty($_POST['email'])?'Debe escribir un email.':'';
if(empty($buffer)){
//procedimientos del registro, inserción en BD, etc
}else{
header('Location: register.php?nombre='.$_POST['nombre'].'&email='.$_POST['email'].'&buffer='.$buffer);
}
No he probado el código, pero debería funcionar. Es para que tengas una idea básica de lo que debes hacer.
Saludos,