Código PHP:
$dni = $_POST['dni'];
$BUSCAR = $_POST['BUSCAR'];
if ($OK == "BUSCAR") {
Estás comparando $OK... no veo que la definas. En tu mensaje anterior dijiste: "Y luego lo llamo del tipo $dni o $BUSCAR."; no se ve que hagas eso.
Ve bien lo que haz de comparar y cuándo hacerlo. Presiento el formulario inicial no querrás que aparesca después de enviar "el mismo". Si es ese el caso me adelanto diciendote que ocupes la función empty() para ver si hay datos que ya han sido enviados...
La verdad no me he detenido a mirar tu código como para saber exáctamente lo que vaz a hacer --ya mencioné la opción de iluminarlo--, pero el comportamiento que describes se soluciona de manera sencilla (si leiste lo que dejé); $_POST y ... órden (para no decir lógica, sonaria un tanto... despectivo, no es el caso).
Suerte!