En lo personal creo que aquí ahi unos detalles:
$lineas="129,2003,304,2300,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0";
$lista = explode(",",$lineas);
Según esto:
$lista[1] = 2003;
$lista[2] = 304;
Hasta donde yo sé mktime recibe estos parametros:
mktime(0,0,0,date("el_mes"),date("el_día"),date("e l_año"));
Entonces según estos parámetros con la función que pones
$MD=date("m-d",mktime(0,0,0,1,$lista[2],$lista[1]));
En realidad le estas pasando:
$MD=date("m-d",mktime(0,0,0,1,304,2003));
Yo no conozco ningun dia 304. Ahora otro detalle lo encuentro en tu consulta:
mysql_query("select id_lectura from lectura where hora='$h' and fecha=(
select fecha from lectura where fecha='$AMD' and medicion='$med')", $link);
No sería mejor si la pones de este modo:
mysql_query("SELECT id_lectura, fecha FROM lectura WHERE hora = '".$h."' AND fecha = '".$AMD."' AND medicion = '".$med."' )", $link);
No digo que esto sea lo que no te muestra los resultados deseados solo que deberías checarlo. Suerte