Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/01/2010, 08:38
kof3d
 
Fecha de Ingreso: diciembre-2007
Mensajes: 42
Antigüedad: 16 años, 4 meses
Puntos: 0
Conexión a BD MySQL y consultas anidadas

Saludos, estoy comenzando en la POO de PHP... para empezar estoy creando una clase de conexion a bd la cual es la siguiente:

Código PHP:
    class bd_mysql {
        
/* Variables de conexion */
        
private $servidor;
        private 
$usuario_bd;
        private 
$clave_bd;
        private 
$database;
        
        
/* Variable de resultados de la consulta */
        
private $resultado;
        
        
/* Identificador de conexión y consulta */
        
private $conexion_id;
        private 
$consulta_id;
        
        
/* Método constructor */
        
public function __construct(){
            
$this->servidor "localhost";
            
$this->usuario_bd "root";
            
$this->clave_bd "mysql";
            
$this->database "dumpingoo";
        }
        
        
/*Conexion a la bd*/
        
public function conectar(){
            
/* Conectamos al servidor */
            
$this->conexion_id=mysql_connect($this->servidor$this->usuario_bd$this->clave_bd);
                        
            
/* Seleccionamos la base de datos */
            
mysql_select_db($this->database$this->conexion_id);
        }
        
        public function 
consultar($query){
            if(!empty(
$query)){
                
/* Ejecutamos la consulta */
                
$this->consulta_id=mysql_query($query$this->conexion_id);
            }
        }
        
        
/* Almacenamos el resultado de la consulta en un objeto */
        
public function ver_consulta(){
            
$this->resultado=mysql_fetch_object($this->consulta_id"bd_mysql");
            
            return 
$this->resultado;
        }
        
        public function 
ver_resultado(){
            return 
$this->resultado;
        }
        
        
/* Cerramos la conexión con la base de datos */
        
public function cerrar_conexion(){
            
mysql_close($this->conexion_id);
        }
        
        
/* Libera el contenido que se encuentra en el atributo */
        
public function limpiar_consulta(){
            
mysql_free_result($this->consulta_id);
        }
    } 
Ahora bien, quiero hacer una consulta anidada donde imprimo una sección y sus correspondientes categorias, así:

Sección 1
- Categoria 1
- Categoria 2
- Categoria 3
Sección 2
- Categoria 1
- Categoria 2
- Categoria 3
...

Pero utlizando mi clase tendría que crear varias conexiones a la BD lo cual no es correcto

Código PHP:
    include_once("index.class.php");
    
    
$seccion = new bd_mysql;
    
$seccion->conectar();
    
$seccion->consultar("select nombre_seccion, id_seccion from secciones");
    
$seccion->ver_consulta();
    
    
$categoria = new bd_mysql;
    
$categoria->conectar();
    
    
/* Aqui el codigo con la consulta anidada para obtener la categoria de cada sección */ 
Como ven al hacer esto crearía dos conexiones...

Para solucionarlo he leido un poco sobre el patrón singleton pero con este tendría el problema de que se modificaría el valor de la consulta y su respuesta...

Me gustaria que me ayudaran a encontrar una solución optima, ¿tendrá que utilizar herencia para que la clase 'madre' controle la conexión y en las extendidas hacer la consulta?

Bueno espero sus sugerencias... en todo sentido...