Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/12/2006, 22:33
Computer XTress
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Busqueda Clases para DB y QUERY: ¿Por qué todo en la misma clase?

Hola ¿Qué tal?

Me pregunto por qué la gran mayoría crea una misma clase para la conexión y para las consultas... yo tengo estas dos clases que hice hoy para un proyecto, separando: Conexión a la BD y Querys a la BD.

Me gustaría saber sus opiniones... estoy hace poco con POO en PHP por lo que sus comentarios me podrían llegar a servir de mucho!


Un saludo grande

Código PHP:

class mysqldb_conexion {

    
/* variables de conexión */
    
var $BaseDatos;
    var 
$Servidor;
    var 
$Usuario;
    var 
$Clave;

 
    
/* identificador de conexión y consulta */
    
var $Conexion_ID 0;


    
/*********************** METODOS ***********************/

    /* Constructor */

    
function mysqldb_conexion($bd ""$host "localhost"$user "nobody"$pass "") {
        
$this->BaseDatos $bd;
        
$this->Servidor $host;
        
$this->Usuario $user;
        
$this->Clave $pass;
    }


    
/*Conexión a la base de datos*/

    
function conectar($bd ""$host ""$user ""$pass ""){

        
// Si ya existe una conexión abierta al intentar conectar, la cerramos.
        
if ($this->Conexion_ID != "0") {
            
$this->cerrar();
        }
        

        
// Si me pasan valores, altero los valores globales de la clase con estos
        
if ($bd != ""$this->BaseDatos $bd;
        if (
$host != ""$this->Servidor $host;
        if (
$user != ""$this->Usuario $user;
        if (
$pass != ""$this->Clave $pass;

 
        
// Conectamos al servidor
        
$this->Conexion_ID = @mysql_connect($this->Servidor$this->Usuario$this->Clave) or die(mysql_error());

 
        
// Seleccionamos la base de datos
        
mysql_select_db($this->BaseDatos$this->Conexion_ID) or die(mysql_error());


         
// Si todo salió bien, retornamos el ID de conexión (lo que antes usabamos como $link)
        
return $this->Conexion_ID;
    }

 

    
/* Cerramos la conexion a la BD */

    
function cerrar() {
        
mysql_close($this->Conexion_ID);
        
$this->Conexion_ID "0";
    }


Código PHP:
class mysqldb_consulta {

    
/* Variables asociadas a consultas */
    
var $Consulta_ID 0;
    var 
$resultado;
    var 
$conexion;

    
/* Flag para limpiar automaticamente los resultados cuando sea necesario */
    
var $qflag 0;


    
/*********************** METODOS ***********************/

    /* Recibimos una referencia hacia la instancia "conexión": Ahorramos memoría por un poquito más de CPU Time */
    
function mysqldb_consulta(&$conexion) {
        if (
$conexion != "") { $this->conexion = &$conexion; }
    }


    
/* Realizamos un query a la base de datos */

    
function consulta($sql){

        
// Si la consulta es tipo "select", nos aseguramos de que se libere memoria.
        
if ( strtolower(substr($sql,0,6)) == "select") {

            if (
$this->qflag == 1) {
                
mysql_free_result($this->Consulta_ID);
                
$this->qflag 0;

            } else {

                
$this->qflag 1;
            }
        }


        
// Ejecutamos la consulta
        
$this->Consulta_ID = @mysql_query($sql$this->conexion->Conexion_ID) or die(mysql_error());

        return 
$this->Consulta_ID;
    }


    
/* Cargamos los resultados de la consulta en un ARRAY */

    
function get_array() {

            
$this->resultado mysql_fetch_array($this->Consulta_ID) or die(mysql_error());
            return 
$this->resultado;
    }


    
/* Devuelve el nombre de un campo de una consulta */

    
function nombrecampo($numcampo) {
        return 
mysql_field_name($this->Consulta_ID$numcampo);
    }


    
/* Devuelve el número de campos de una consulta */

    
function numcampos() {
        return 
mysql_num_fields($this->Consulta_ID);
    }


    
/* Devuelve el número de registros de una consulta */

    
function numrows() {
        return 
mysql_num_rows($this->Consulta_ID);
    }



    
/*
     * Muestra una tabla con los resultados de la consulta.
     * Esta función está pensada para utilizarse solo para testear
     * consulas.
     *
     */

    
function debug_results() {
        echo 
"<table border=1>\n";
 

        
// mostramos los nombres de los campos
        
for ($i 0$i $this->numcampos(); $i++){
            echo 
"<td><b>".$this->nombrecampo($i)."</b></td>\n";
        }

        echo 
"</tr>\n";
        
// mostrarmos los registros

         
while ($row mysql_fetch_row($this->Consulta_ID)) {

            echo 
"<tr> \n";

            for (
$i 0$i $this->numcampos(); $i++){
                echo 
"<td>".$row[$i]."</td>\n";
            }

            echo 
"</tr>\n";
        }
    }


    
/* Mueve el índice de mi query-array hacia la posición $indice. */

    
function seek($indice) {
        if (
$this->Consulta_ID != 0) {
            
mysql_data_seek($this->Consulta_ID$indice);
        } else {
            return 
0;
        }
    }


    
/* Limpiamos los resultados de una consulta */

    
function free() {

        if (
qflag == 1) {

            
mysql_free_result($this->Consulta_ID);
            
$this->qflag 0;
        }
    }

Saludos!!