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

falla indefinida :S Sencillo si

Estas en el tema de falla indefinida :S Sencillo si en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, tengo una clase que me tendría que devolver una consulta, la consulta produce 3 resultados, pero me muestra 6, osea muestra los ...
  #1 (permalink)  
Antiguo 30/10/2009, 23:42
 
Fecha de Ingreso: julio-2009
Ubicación: En mi casa
Mensajes: 48
Antigüedad: 14 años, 9 meses
Puntos: 3
falla indefinida :S Sencillo si

Hola a todos, tengo una clase que me tendría que devolver una consulta, la consulta produce 3 resultados, pero me muestra 6, osea muestra los resultados 2 veces... Y me pregunto que podría ser.
aquí esta la clase:

Código PHP:
<?php
    
include('conexion.php');
    class 
traerEncuestas extends conexion{
        public function 
__construct(){
        
parent::__construct();
        
$this->imprimirEncuestas();
        }
        private function 
imprimirEncuestas(){
            
$query3=mysql_query("select id,opcion FROM encuestas INNER JOIN opciones ON encuestas.id_encuesta=opciones.id where fcierre>'".$date."'"$this->conn )or die('error en el inner join');
                while(
$reg=mysql_fetch_array($query3)){
                    echo 
$reg[opcion];
                }
            
mysql_close($this->conn);
        }
    }
$perl=new traerEncuestas();
?>
Tambien intente con este inner join, hace lo mismo, pero es distinto :P
Código PHP:
$query3=mysql_query("SELECT id,fcierre,fcreacion,nombre,opcion FROM encuestas INNER JOIN opciones ON (encuestas.id_encuesta=opciones.id) where fcierre>'".$date."'",$this->conn) or die('error en el inner join'); 
la clase conexion:
Código PHP:
<?php
    
class conexion{
    public function 
__construct(){
        
$date=date("Y/m/d");
        
$this->conn=mysql_connect('localhost','root','protego')or die('error en el connect');
        
mysql_select_db('encuestas',$this->conn) or die ('error en el select');
}
}
?>
y mi super index:
Código PHP:
<?php include('traerEncuestas.php');
    class 
encuestas extends traerEncuestas{
        public function 
__construct(){
            
parent::__construct();
    }
}
<?
php $perl=new encuestas(); ?>
?>
Jojo, se que el código esta desastroso u.u aun no manejo bien OOP, soy demasiado novato, pero pido disculpas por el código, y prometo mejorar :p

Eso me da el siguiente resultado:
Tercera Opcion
Primera Opcion
Segunda Opcion
Tercera Opcion
Primera Opcion
Segunda Opcion

tendria que devolverme:

Tercera Opcion
Primera Opcion
Segunda Opcion

...xD no se porque rayos pasa eso, es la primera ves y me ha tomado por sopresa! que es lo que hago mal? y si podrían mostrarme alguna solución en bodigo les estaría agradecido y en deuda. PD: ya busque info y nada.
  #2 (permalink)  
Antiguo 31/10/2009, 09:02
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: falla indefinida :S Sencillo si

Hola

Código:
<?php
    include('conexion.php');
    class traerEncuestas extends conexion{
        public function __construct(){
        parent::__construct();
        $this->imprimirEncuestas();
        }
        private function imprimirEncuestas(){
            $query3=mysql_query("select id,opcion FROM encuestas INNER JOIN opciones ON encuestas.id_encuesta=opciones.id where fcierre>'".$date."'", $this->conn )or die('error en el inner join');
                while($reg=mysql_fetch_array($query3)){
                    echo $reg[opcion];
                }
            mysql_close($this->conn);
        }
    }
$perl=new traerEncuestas();
?>
Código:
<?php include('traerEncuestas.php');
    class encuestas extends traerEncuestas{
        public function __construct(){
            parent::__construct();
    }
}
<?php $perl=new encuestas(); ?>
?>
Porque instancias la clase 2 veces, me parece que es por eso que se te genera una duplicación de resultados, si te das cuenta en el primer código creas esta instancia $perl=new traerEncuestas(); la cual llama al método que imprime las opciones, y luego en el index vuelves a hacer la instanciación nada mas que utilizando la herencia por ende se vuelve a llamar al método que imprime las opciones.

Podrías decirme cual es la razón de instancia la clase en el primer código.
  #3 (permalink)  
Antiguo 31/10/2009, 13:51
 
Fecha de Ingreso: julio-2009
Ubicación: En mi casa
Mensajes: 48
Antigüedad: 14 años, 9 meses
Puntos: 3
Respuesta: falla indefinida :S Sencillo si

Fenris, Gracias. Estas en toda la razon.

Habia arreglado el problema ya esta mañana, lo que hice fue llamar a la clase imprimirEncuesta directamente, y quite el __construct(), eso lo soluciono todo, pero gracias por tu ayuda.

:)
  #4 (permalink)  
Antiguo 31/10/2009, 14:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: falla indefinida :S Sencillo si

adicionalmente no coloques dicho método en el constructor, cuando realmente necesites los datos emplea el método no mas!!
Código PHP:
<?php
$perl
=new encuestas();
$perl->imprimirEncuestas();
?>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 01:18.