Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/02/2005, 12:23
Avatar de nitrouz
nitrouz
 
Fecha de Ingreso: agosto-2003
Ubicación: Buenos Aires, Argentina
Mensajes: 78
Antigüedad: 21 años, 5 meses
Puntos: 0
Mi Clase de conexion a Bases de Datos

Código PHP:
######################################
# Clase de Conexion a Base de Datos  #
# Cristian Conedera      #
# http://www.nitrous.com.ar/   #
######################################
class dbCon {
  
//Atributos de conexion
  
var $host;
  var 
$user;
  var 
$pass;
  var 
$db;
  
  
//Identificadores de Conexion
  
var $conID 0;
  var 
$queryID = array();
  var 
$campo;
  var 
$row = array();
  
  
// Modo de Debug
  
var $debug 0;
  var 
$debugLOG;
  
  
// Constructor
  
function dbCon ($host="localhost",$user="root",$pass="",$db="")
  { 
    
$this->host $host;
 
$this->user $user;
 
$this->pass $pass;
 
$this->db $db;
  }  
  
  
// Conexion a la base de datos
  
function conectar($host,$user,$pass,$db)
  { 
    if(
$host=="" || $user=="" || $db=="") die("No se ingresaron todos los datos de conexión<br>");
    
$this->host $host;
    
$this->user $user;
    
$this->pass $pass;
    
$this->db $db;
 
    
$this->conID = @mysql_connect($this->host,$this->user,$this->pass);
 if(!
$this->conID) {
   die(
"<b>Error al conectar al Servidor MySQL: </b>".mysql_error());
 } else { if(
$this->debug) echo "Se realizo la conexion con exito (".$this->host.",".$this->user.",".$this->pass.")<br>"; }
 
mysql_select_db($this->db,$this->conID);
 
 if(
$this->debug) echo "Se selecciono la base de datos <b>".$this->db."</b><br>"#debug
 
 
return $this->conID;
  }
  
  
// Hacer consulta
  
function consulta ($consulta,$ident=NULL
  {
    if(empty(
$ident)) { die("El identificador de consulta no puede estar vacío"); }
    if(empty(
$consulta)) { die("La consulta no puede estar vacía"); }
 
$this->queryID[$ident] = mysql_query($consulta,$this->conID);
  if(!
$this->queryID[$ident]) 
  {
   die(
"<b>Error al ejecutar la consulta:</b> \"".$consulta."\"<br><b>MySQL dice:</b> ".mysql_error($this->conID));
  } 
   else 
  { 
   if(
$this->debug) echo "Se ejecuto la consulta<b> \"$consulta\"</b> con el ID: <b>$ident</b> exitósamente.<br>"
  }
 return 
$this->queryID[$ident];
  }
  
  
// Cuenta numero de registros
  
function numreg($ident=NULL
  { 
    if(!
$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
 if(
$this->debug) echo "Se solicito el numero de registros de <b>$ident</b><br>"#debug
 
return mysql_num_rows($this->queryID[$ident]);
  }
  
// Cuenta numero de campos
  
function numcampos($ident=NULL
  {
    if(!
$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
 if(
$this->debug) echo "Se solicito el numero de campos  de <b>$ident</b><br>"#debug
 
return mysql_num_fields($this->queryID);
  }  
  
  
// Muestra el contenido de un campo del registro especificado por $offset
  
function busca($campo,$offset=0,$ident=NULL)
  {
    if(!
$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
    if(
$this->debug) echo "Se solicito el contenido del campo <b>\"$campo\"</b> registro nº <b>$offset</b> de la consulta <b>$ident</b><br>"#debug
 
$temp = @mysql_result($this->queryID[$ident],$offset,$campo);
 if(!
$temp) die("El campo $campo o el registro $offset no existe");
 return 
$temp;
  }
  
  function 
recorre($ident=NULL)
  {
   if(!
$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
   
$this->row[$ident] = mysql_fetch_array($this->queryID[$ident]);
   return 
$this->row[$ident];
  }
  
  
// Muestra el contenido de un campo dentro de una consulta con mysql_fetch_array();
  
function campo($campo,$ident=NULL)
  {
   if(!
$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
   if(!
array_key_exists($campo,$this->row[$ident])) die("No existe el campo solicitado");
   return 
$this->row[$ident][$campo];
  }
  
  
  
// Libera los resultados del Query
  
function liberar($ident=NULL)
  {
   if(!
$this->check_ident($ident)) { die("El identificador esta vacío o no es válido"); }
   if(
$this->debug) echo "Se liberaron los resultados de la consulta $ident<br>"#debug
   
return mysql_free_result($this->queryID[$ident]);
  }
  
  
// Cierra Base de Datos
  
function cerrar()
  {
   if(
$this->debug) echo "Se cerro la conexion con la base de datos<br>"#debug
   
return mysql_close($this->conID);
  }
  
  function 
check_ident($ident=NULL)
  { 
   
$valido 1;
   if(empty(
$ident)) $valido 0;
   else 
     if(!
array_key_exists($ident,$this->queryID))
   
$valido 0;
   return 
$valido;
  } 

Aún le falta perfeccionar un poco los mensajes del Debug.
Y creo que va a haber problema (no lo chequee todavía) con la función campo() cuando queramos recorrer dos arrays de Bases de Datos con loops anidados.
No es la mejor clase, pero es la primera que hago...

Cualquier sugerencia es bienvenida
__________________
Cristian Conedera
Mi Web: BothMedia.com, Diseño y Desarrollo
Mi Blog: nitrousBLOG*

Última edición por nitrouz; 22/02/2005 a las 22:13