Deberías separar el insert del form...
Segun lo q has puesto, tienes algo así
ArchivoX.php
Código:
<header>
<php unas pocas sentencias para recuperar el valor del dni>
<formulario>
<insert dni>
Y deberia ser algo así
Código:
<header>
<¿he enviado el formulario?>
<en caso afirmativo, trato el formulario>
<¿es correcto?>
<inserto en la base de datos>
<¿no es correcto?>
<mensaje de error>
<muestro el form>
<¿no lo he enviado?>
<muestro el formulario>
Sino, por ejemplo, cuando abras el formulario intentará hacer un insert