Hola,
Leamos lo que dice el error: el argumento pasado a mysql_num_rows() no es un id valido de resultado. Bien, ¿de donde sacas el valor que le pasas como argumento a mysql_num_rows()? Pues de mysql_query(). Asi que es mysql_query() el que devuelve un valor no valido. Mirando al manual (
www.php.net/mysql_query), ¿cunado mysql_query() devuelve un valor no valido? Pues devuelve false cuando se ha producido un error en el servidor MySQL al ejecutar la consulta. ¿Como podemos ver el mensaje de error producido por MySQL? Con la funcion mysql_error() (
www.php.net/mysql_error). Puedes usar una estructura con el or die() como has hecho con las otras funciones mysql_.
Saludos.