Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Duda creando clase.

Estas en el tema de Duda creando clase. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola he echo la siguiente clase pero tengo una duda a la hora de hacer un ciclo con los registros que me devuelve la consulta. ...
  #1 (permalink)  
Antiguo 30/04/2006, 15:56
 
Fecha de Ingreso: julio-2005
Mensajes: 17
Antigüedad: 18 años, 9 meses
Puntos: 1
Duda creando clase.

Hola he echo la siguiente clase pero tengo una duda a la hora de hacer un ciclo con los registros que me devuelve la consulta.

Código PHP:
class libro_visitas extends consulta {
    
    var 
$row_visitas;
    var 
$nombres;
    var 
$texto;
    var 
$fecha;
    var 
$email;
    var 
$ip;
    var 
$nacionalidad;
    var 
$mensaje;
    var 
$query_visitas;

    function 
get_lvisitas(){
        
$visitas = new consulta();
        
$this->query_visitas $visitas->ejecutar("SELECT * FROM libro_visitas");
        
        while (
$this->row_visitas mysql_fetch_array($this->query_visitas)){
            echo 
$this->$this->row_visitas['nombre']."<br>";
        }
mysql_free_result($this->query_visitas);
        }

Al crear esta instancia deberia mostrarme los nombres o email de los usuarios que han escrito en el libro de visitas.

Código PHP:
$visitas = new libro_visitas();
$visitas->get_lvisitas(); 
Espero me puedan ayudar pronto.

Gracias de antemano.

Atte. Damian
  #2 (permalink)  
Antiguo 30/04/2006, 18:04
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Buenas.

No conozco en profundidad sobre programación orientada a objetos, pero hay algo que me parece raro en el código que mostrás. Si la clase libro_visitas extiende a consulta, quiere decir que hereda todas sus propiedades y métodos. Por tanto, no entiendo la razón por la cual estás creando una instancia de consulta al llamar al método get_lvisitas() del objeto $visitas.

Si ejecutar es un método de la clase consulta, también lo es de la clase que herede de consulta, en este caso, libro_visitas.

En lugar de crear la instancia, directamente podrías hacer $this->ejecutar().

Por otro lado, tal vez no sea necesario tener un campo query_visitas, que podría ser una variable local del método get_lvisitas() (a menos que tengas otra razón para hacerlo así, habría que ver qué estás buscando; lo mismo, sobre $this->row_visitas y $this->a).

Otra cuestión, me parece, es que es mejor (más prolijo y flexible) separar la obtención de los datos de la presentación de los mismos. En lugar de que get_lvisitas() hiciera un echo, podría usar return para devolver el resultado de la consulta (como "resource" o ya parseado como un array) y otro método sería el encargado de darle formato a la salida.

De esta manera, un método se encargaría de darle formato a la presentación y get_lvisitas() simplemente de hacer la consulta y devolver un resultado. Si cambiás sólo la presentación, get_lvisitas() no se vería afectado (y no debería, porque no estaría cambiando la "lógica" sino sólo el aspecto gráfico).

Bueno, son sólo un par de ideas, esperemos la opinión de los expertos.

Suerte
Califa
  #3 (permalink)  
Antiguo 01/05/2006, 10:31
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Estaría bueno entender primero el diseño, para luego poder discutir el código.

Por ejemplo, que tienes que ver una clase "libro_visitas" que hereda de "consulta" para luego crear una instancia de la "consulta" dentro de un método de "libro_visitas"?

Si ya dispones de los métodos de "consulta" por la herencia, no debes crear una instancia.

¿Nos puedes contar las relaciones entre las clases?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #4 (permalink)  
Antiguo 03/05/2006, 07:39
 
Fecha de Ingreso: julio-2005
Mensajes: 17
Antigüedad: 18 años, 9 meses
Puntos: 1
Hola Gracias por responder.

La clase libro_visitas hereda de consulta, la cual es una clase que conecta a la base de datos.

Hasta hay todo bien.

Lo que quiero es que me muestre en mi pagina todos los registros que hay en la tabla libro_visitas de la db. Ya que solo me muestra 1 solo registro.

Espero que entiendan mi problema.

Atte.
Damian
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:32.