Hola:
No soy un Gurú ni mucho menos pero me atreveré a responder.
Lo que pasa es que la llamada a la función consulta_db() se está relizando en cada iteración del bucle.
¿Qué hace esa función?
- Ejecuta una consulta.
- Devuelve el identificador del resultset que se acaba de generar.
Por lo tanto estás generando un nuevo resultset en cada iteración y siempre tomas el primer registro. Claro, porque cuando vuelves a otra iteración para tomar el segundo, ya no trabajas con el mismo resultset, sino que generas otro.
Posiblemente te ayude implementar otro método como
Código PHP:
function fetch()
{
$row = mysql_fetch_array($this->result);
return ($row);
}
O hacerlo como lo has hecho hasta ahora.
Lo del foreach no lo entiendo.
Saludos