No estoy seguro del todo, pero creo que además de enviar la cabecera indicando el código 404, habría que enviar el código html con el mensaje de error que queremos mostrar. Es decir, el mensaje de error no lo muestra automaticamente el navegador al recibir una respuesta con el código 404 o cualquier otro. Podemos hacer una prueba: conectarnos via telnet al servidor y pedir una pagina que no exista:
telnet direccion_servidor 80
GET pagina_inexistente HTTP/1.0
Y ahí vamos a ver el texto con la cabecera 404 y además el código html que dice "Not Found .....".
Seria:
Código PHP:
<?
if(mysql_num_rows($result)==0)
{
header("HTTP/1.0 404 Not Found");
echo codigo_html;
}
?>
Saludos.