buenas,
se ha mencionado reiteradamente que el código php se ejecuta en el servidor y luego el resultado es enviado al cliente. lo que significa que el código php en javascript no se interpreta cuando se invoca la función de javascript. la primera vez que cargas el documento, php no obtiene la información de $_POST y por ende probablemente la base de datos devuelva un resultado vacio. entonces, al invocar
validar siempre devolverá que los datos son incorrecto. por tanto, para que funcione de la manera que lo tienes, al cargar la primera vez el documento, dichos datos deben de estar disponibles para que la consulta mysql pueda generar el resultado. por otro lado, nótese que es incorrecto generar un script dentro de otro. es decir, en tu primer código si no se encuentra algun resultado en la base de datos, php escribe un script con un aviso, pero lo esta escribiendo dentro de otro script. ahí solo deberías imprimir el aviso.