Hola,
Tu fallo es que la primera vez que se ejecuta el script la variable $anyo (la del select) no esta definida. Por eso las consultas tienen sintaxis incorrecta, mysql_query() devuelve false y da error cualquier intento de acceder a esos recordset. La solucion seria usar un valor por defecto en caso de que no este definida. Pon algo como:
Código PHP:
if (!isset($anyo)) $anyo=2003;
al comienzo del script, suponiendo que la primera vez se muestren los valores de ese año.
Para que se quede mascado el año seleccionado, deberias saber que para eso en HTML debes poner el atributo selected en el <option> que quieres que este seleccionado. En este caso:
Código PHP:
while ($row=mysql_fetch_array($result))
{
if ($anyo==$row["anyo"]) {
echo '<option value="'.$row["anyo"].'" selected>'.$row["anyo"].'</option>';
} else {
echo '<option value="'.$row["anyo"].'">'.$row["anyo"].'</option>';
}
}
Ademas, haz lo que comenta Manoloweb.
Saludos.