Ho risolto. Era davvero una cavolata. Ho dato lo stesso nome alle esecuzioni di query.
$res era già la query interna della quale $row = mysql_fetch_array($res) estraeva i campi.
Io dentro il ciclo while facevo $res=mysql_query e quindi mi si sovrascriveva sfanculizzando il tutto. Potete chiudere la discussione