Estoy haciendo un formulario algo complejo (al menos a comparación a un típico formulario de contacto) que incluye varios elementos, como inputs de tipo radio y selects. Yo realizo las validaciones de todos los campos en el mismo archivo PHP donde está el formulario, y el formulario llama a su mismo archivo cuando se envía por POST, con esto puedo mostrar todos los datos que ingresó el usuario en los campos para que no tenga que volver a cargarlos y además puedo mostrar arriba de todo el mensaje de error específico. Supongo que es la mejor manera.
Con los elementos que mencionaba, es decir los que son distintos a los input de tipo text, hago algo así:
Código PHP:
$sexo = 0; // Opción por defecto cuando nunca se envió el formulario.
if(isset($_POST['enviar_formulario'])) {
$sexo = $_POST['sexo']; // Cambio la opción por defecto por la seleccionada.
}
Código HTML:
<input type="radio" name="sexo" value="0"<?php if($sexo == 0) {echo ' checked="checked"';} ?> /> Masculino <input type="radio" name="sexo" value="1"<?php if($sexo == 1) {echo ' checked="checked"';} ?> /> Femenino
Un saludo.