Non mi e' assolutamente chiaro cosa c'entri il mysql_affected_rows() con la domanda: lui vuole sapere quante offerte (e quindi quante tuple) ci sono nel suo result set. Per entrambe devi usare la sintassi SELECT COUNT(...), e nello specifico:
Per la prima query, basta scrivere:
SELECT COUNT(*) FROM hotel
Nota che ho eliminato l'ordinamento visto che per contare non serve a niente (anche se penso che l'ottimizzatore la faccia gia' di suo). Per la seconda:
SELECT COUNT(*) FROM offerte WHERE hotel='$ido'
mysql_affected_rows() serve per sapere quante righe sono state 'toccate' dall'ultimo statement SQL, e nulla ha a che vedere con i conteggi; dopo una INSERT, il metodo in questione puo' restituire solo o uno o zero, rispettivamente nei casi di inserimento effettuato correttamente o di fallimento dell'inserimento (ad esempio per violazione di uno dei vincoli dello schema).