Hola,
El problema es que en resultado() estas metiendo el return dentro de un bucle. Y return sale de la funcion en su primera ejecucion, asi que solo devuelve el primer registro.
La solucion seria implementar resultado() para que funcione de la misma forma que mysql_fetch_assoc(), quedando algo como:
Código PHP:
function resultado() {
return mysql_fetch_assoc($this->consulta);
}
Y se llamaria como a mysql_fetch_assoc(), con un while.
Otra opcion seria que resultado() almacenase todo el recordset en un array y devolviese ese array, algo como:
Código PHP:
function resultado() {
$registros=array();
while ($row=mysql_fetch_assoc($this->consulta)) {
$registros[]=$row;
}
return $registros;
}
Y luego al recoger el array se podria recorrer con un foreach:
Código PHP:
$res=$mysql->resultado();
foreach ($res as $row) {
echo"$row[nombre_producto]<br>";
}
Sobre la simplificacion del codigo, me temo que no hay forma de evitar poner el objeto.
saludos.