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

Clase Conexion MySQL... opinion...

Estas en el tema de Clase Conexion MySQL... opinion... en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Bueno, llevo bastante tiempo intentando hacer una clase que bien estructurada... ahora que por fin la he acabado, bueno, hace tiempo pero no sabia si ...
  #1 (permalink)  
Antiguo 10/04/2009, 08:02
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Clase Conexion MySQL... opinion...

Bueno, llevo bastante tiempo intentando hacer una clase que bien estructurada... ahora que por fin la he acabado, bueno, hace tiempo pero no sabia si ponerla o no, quiero que me deis vuestras opiniones sobre que os parece, si no es mucha molestia... y si todo esta bien la podriais poner como aporte...

PD: puede que sobran variables...

Código php:
Ver original
  1. <?php
  2. class ConectarMySQL
  3. {
  4.     //variables conexion con la base de datos / servidor
  5.     private $servidor;                  //nombre de host
  6.     private $base_de_dades;             // nombre de la base de datos
  7.     private $usuari;                    // nombre de usuario base de datos
  8.     private $contrasenya;               //contraseña acceso base de datos
  9.     //variables fin conexion con la base de datos / servidor
  10.    
  11.     //conexion con el servidor
  12.     private $connect;                   //guarda la conexion con el MySQL host.
  13.     private $persistente;               //boolean para saber si la conexion sera persistente o no.
  14.     //fin conexion con el servidor
  15.  
  16.     //consultas base de datos
  17.     var $consulta;                  //guarda la consulta MySQL.
  18.     var $resultat;                  //guarda resultado de la consulta MySQL.
  19.     var $numfilas;                  //numero de filas de una consulta MySQL.
  20.     var $numcampos;                 //numero de capos de una consulta MySQL.
  21.     //fin consultas base de datos
  22.    
  23.    //creacion consulta INSERT / UPDATE
  24.     private $array_key;                 //guarda el nombre de los campos MySQL.
  25.     private $array_valor;               //guarda valores associados a los campos MySQL.
  26.    
  27.     private $nombre_campo;              //guarda los campos preparados para la consulta MySQL.
  28.     private $valor_compo;               //guarda los valores preparados para la consulta MySQL.
  29.     //fin creacion consulta INSERT / UPDATE
  30.    
  31.     //variables adicionales
  32.     private $error;                     //guarda el ultimo error generado.
  33.     //fin variables adicionales
  34.    
  35.  
  36.     function __construct($servidor = "", $usuari = "", $contrasenya = "", $base_de_dades = "", $persist = False)
  37.     {
  38.         //Damos valores a las variables de conexion (por defecto o no).    
  39.         //Determinamos si la conexion sera persistente o no.
  40.         $this->servidor      = (!empty($servidor))?  $servidor : "localhost";
  41.         $this->usuari        = (!empty($usuari))?  $usuari : "";
  42.         $this->contrasenya   = (!empty($contrasenya))?  $contrasenya : "";
  43.         $this->base_de_dades = (!empty($base_de_dades))?  $base_de_dades : "";
  44.     }
  45.  
  46.     function Conectar()
  47.     {
  48.         //Establece la conexion con el servidor de la base de datos.
  49.         if($this->persistente)
  50.         {
  51.             //Esta conexion la cierra el servidor (mysql_close no funciona).
  52.             $this->connect = @mysql_pconnect($this->servidor, $this->usuari, $this->contrasenya);
  53.         }
  54.         else
  55.         {
  56.             $this->connect = @mysql_connect($this->servidor, $this->usuari, $this->contrasenya);           
  57.         }
  58.        
  59.         //Verifica si la conexion se ha echo con el servidor.
  60.         if(!$this->connect)
  61.         {
  62.             $this->error = mysql_error();
  63.             return(False);
  64.         }
  65.         else
  66.        {
  67.             if(!empty($this->base_de_dades)){$this->SeleccionarBaseDatos();}
  68.             return($this->connect);
  69.        }
  70.     }
  71.    
  72.     //Selecciona la base de datos a la cual se tiene que conectar.
  73.     //Comprueba que se ha echo correctamente.
  74.     function SeleccionarBaseDatos($bd = "",$con = null)
  75.     {
  76.         if(!empty($bd)){$this->base_de_dades = $bd;}
  77.         if($con != null){$this->connect = $con;}
  78.          
  79.         if(!@mysql_select_db($this->base_de_dades, $this->connect))
  80.         {
  81.             $this->error = mysql_error();
  82.             return(False);
  83.         }
  84.         else{return(true);}
  85.     }
  86.    
  87.     //no hacer caso...
  88.     /*function AutoConectar($bool)
  89.     {
  90.         if($bool)
  91.         {
  92.             $this->ConectarMySQLServer(SERVER,USER,PASS,DB,False);
  93.             $this->Conectar();
  94.         }
  95.     }*/
  96.  
  97.     //Envia una consulta al servidor de la base de datos.
  98.     //Compruba que la consulta se ha resulto con exito.
  99.     function Consulta($consulta_exe,$con = null)
  100.     {
  101.         //compruba que la conulsta enviada sea valida.
  102.         if(empty($consulta_exe))
  103.         {
  104.              $this->error = "La consulta a tramitar no es valida.<br />";
  105.              return(False);        
  106.         }
  107.        
  108.         //Comprueba que la consulta se ha echo.
  109.         $this->consulta = ($con != null)? @mysql_query($consulta_exe,$con) : @mysql_query($consulta_exe,$this->connect);
  110.         if(!$this->consulta)
  111.         {
  112.             $this->error = mysql_error();
  113.             return(False);
  114.         }
  115.         else
  116.         {
  117.             return($this->consulta);
  118.         }
  119.     }
  120.    
  121.     function UltimoID()
  122.     {
  123.         //Devuelve el ultimo ID generado por un INSERT
  124.         //en un campo de auto incremento.
  125.         return(mysql_insert_id());
  126.     }
  127.  
  128.     function VerDatos($ver_consulta,$tipo = "")
  129.     {
  130.         //Devuelve el resultado/las filas de la consola que se ha echo
  131.         //a la base de datos.
  132.         if(!$ver_consulta)
  133.         {
  134.             $this->error = "Parametro invalido enviado para mostrar los datos.";
  135.             return(False);
  136.         }
  137.        
  138.         if($tipo == "MYSQL_ASSOC"){$this->resultat = @mysql_fetch_array($ver_consulta, MYSQL_ASSOC);}
  139.         if($tipo == "MYSQL_NUM"){$this->resultat = @mysql_fetch_array($ver_consulta, MYSQL_NUM);}
  140.         if($tipo == "MYSQL_BOTH"){$this->resultat = @mysql_fetch_array($ver_consulta, MYSQL_BOTH);}
  141.         if($tipo == ""){$this->resultat = @mysql_fetch_object($ver_consulta);}    
  142.                
  143.        //Comprueba si la consulta ha tenido existe.
  144.         if($this->resultat)
  145.         {
  146.             return ($this->resultat);
  147.         }
  148.         else
  149.         {
  150.             $this->error = mysql_error();
  151.             return(False);
  152.         }
  153.     }
  154.    
  155.     function NumFilas($con = null)
  156.     {
  157.         //Devuelve el numero de filas de la consulta.
  158.         $con = ($con != null)? $con : $this->consulta;
  159.        
  160.         $this->numfilas = mysql_num_rows($con);
  161.         return($this->numfilas);
  162.     }
  163.    
  164.     function NumCampos($con = null)
  165.     {
  166.         //Devuelve el numero de campos de la consulta.
  167.         $con = ($con != null)? $con : $this->consulta;
  168.        
  169.         $this->numcampos = mysql_num_fields($con);
  170.         return($this->numcampos);
  171.     }
  172.    
  173.     function crearDB($db)
  174.     {
  175.         if(function_exists("mysql_create_db"))
  176.         {
  177.             if(!@mysql_create_db($db))
  178.             {
  179.                 $this->error = mysql_error();
  180.                 return(False);
  181.             }
  182.             else
  183.             {
  184.                 return(True);
  185.             }
  186.         }
  187.         else
  188.         {
  189.             $sql = "CREATE DATABASE `".$db."`";
  190.             if(!$this->Consulta($sql)){return(False);}
  191.             else{return(True);}
  192.         }
  193.     }
  194.    
  195.     function InsertarValoresSQL($array_insert,$campo_insert)
  196.     {
  197.         //Genera la consulta MySQL que se envia al servidor (INSERTAR).
  198.         //Se le pasa una array asociativa y convierte
  199.         //los key's de la array en los campos que corresponden
  200.         //a la base de datos y los valores respectivos a valores
  201.         //associados a cada campo.
  202.        
  203.         $this->array_key = array_keys($array_insert);
  204.         $this->array_valor = $array_insert;
  205.        
  206.         for($i = 0;$i < count($this->array_valor);$i++)
  207.         {
  208.             $this->array_valor[$this->array_key[$i]] = (is_numeric($this->array_valor[$this->array_key[$i]]))? $this->array_valor[$this->array_key[$i]] : "'".$this->limpiar($this->array_valor[$this->array_key[$i]])."'";
  209.         }  
  210.        
  211.         for($i = 0;$i < count($this->array_key);$i++)
  212.         {
  213.             $this->array_key[$i] = "`".$this->array_key[$i]."`";
  214.         }
  215.        
  216.         $this->nombre_campo = implode(",",$this->array_key);
  217.         $this->valor_campo = implode(",",$this->array_valor);
  218.        
  219.         $sql = "INSERT INTO `".$campo_insert."` (".$this->nombre_campo.")";
  220.         $sql .= " VALUES(".$this->valor_campo.");";
  221.         return($sql);
  222.     }
  223.    
  224.     function ActualizarValoresSQL($nuevos_valores,$tabla,$where)
  225.     {
  226.         //Genera la consulta MySQL que se envia al servidor (ACTUALIZAR).
  227.         //Se le pasa una array asociativa y convierte
  228.         //los key's de la array en los campos que corresponden
  229.         //a la base de datos y los valores respectivos a valores
  230.         //associados a cada campo.
  231.         $this->array_key = array_keys($nuevos_valores);
  232.         $this->array_valor = $nuevos_valores;  
  233.        
  234.         for($ind = 0;$ind < count($this->array_key);$ind++)
  235.         {
  236.             $valores[$ind] = "`".$this->array_key[$ind]."` = '". $this->array_valor[$this->array_key[$ind]]."'";
  237.         }
  238.        
  239.         $valores = implode(",",$valores);
  240.        
  241.         $sql = "UPDATE `".$tabla."` SET ".$valores;
  242.         $sql .= " WHERE ".$where.";";
  243.         return($sql);
  244.        
  245.     }
  246.    
  247.     function VerError()
  248.     {
  249.         //Devuelve el ultimo error generado
  250.         //si este existe.
  251.         if(!empty($this->error))
  252.         {
  253.             return($this->error);
  254.         }
  255.         else
  256.         {
  257.             return(False);
  258.         }
  259.     }
  260.  
  261.     function CerrarConexion()
  262.     {
  263.         //Cierra la conexion no-persistente con el servidor MySQL.
  264.         mysql_close($this->connect);
  265.     }
  266.  
  267.     function LimpiarConsulta()
  268.     {
  269.         //Libera la memoria associoada a la variable donde se guarda la consulta.
  270.         mysql_free_result($this->consulta);
  271.     }
  272.    
  273.     private function limpiar($variable)
  274.     {
  275.         //para escapar los caracteres especiales.
  276.         if(get_magic_quotes_gpc()){$variable = mysql_real_escape_string(stripslashes(trim($variable)));}
  277.         else{$variable = mysql_real_escape_string(trim($variable));}
  278.         return($variable);
  279.     }
  280.    
  281.     function existTable($table)
  282.     {
  283.         //verifica si una tala existe.
  284.         //si es asi devuelve true sino false.
  285.         $bool = false; 
  286.         $tb_list = mysql_list_tables($this->base_de_dades,$this->connect);
  287.        
  288.         while(list($tb) = mysql_fetch_row($tb_list))
  289.         {
  290.             if($table == $tb)
  291.             {
  292.                 $bool = true;
  293.                 break;
  294.             }
  295.         }
  296.         return($bool);
  297.     }
  298.    
  299.     function existDataBase($database)
  300.     {
  301.         //verifica si una base de datos existe.
  302.         //si es asi devuelve true sino false.
  303.         $bool = false;
  304.         $db_list = mysql_list_dbs($this->connect);
  305.            
  306.         while(list($db) = mysql_fetch_row($db_list))
  307.         {
  308.             if($database == $db)
  309.             {
  310.                 $bool = true;
  311.                 break;
  312.             }
  313.         }
  314.         return($bool);
  315.     }
  316. }
  317. ?>

Última edición por machoman112233; 11/04/2009 a las 02:47
  #2 (permalink)  
Antiguo 10/04/2009, 09:10
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 10 meses
Puntos: 32
Respuesta: Clase Conexion MySQL... opinion...

Muy buena tu clase
  #3 (permalink)  
Antiguo 10/04/2009, 17:52
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: Clase Conexion MySQL... opinion...

no lo he revisado muy bien, pero en una fugaz revisada he visto la utilización de var.
a partir de la versión 5 por defecto un atributo es pública

suerte y que bien que estés programando orientado a objetos.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #4 (permalink)  
Antiguo 10/04/2009, 18:31
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 10 meses
Puntos: 416
Respuesta: Clase Conexion MySQL... opinion...

Hay muchas funciones que ya las tienen otras clases para bases de datos como MySQLi, yo mejor extenderia MySQLi y le agregaria las funciones para insertar valores, y para actualizar.
Tambien si quisieras pudieras agregar un alias para las funciones.
  #5 (permalink)  
Antiguo 10/04/2009, 21:24
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Clase Conexion MySQL... opinion...

Muy buena clase... Y si, lo mejor que hay es la PHP POO, yo hace unas 2 semanas empece la mia despues de leer y leer y aprender jeje... Creo que la mayoria que empieza a programar de esta manera, empieza con mysql :P porque yo tambien estoy haciendo la mia...

y no es que sea critico ni nada, pero te doy una opinion mia...
para ir documentando y guiarte en tus script, mas que nada cuando trabajas con clases, documenta al estilo phpDocumentor phpdoc.org

por ej:

Código PHP:
<?

/**
 * Clase para manejo de MySQL
 *
 * @package MySQL
 * @version 1.1
 */
class MySQL
{
     
/**
      * Conexión persistente
      *
      * @access private
      * @var boolean
      */
     
private $persistente ;
     
     
/**
      * Conectar MySQL
      *
      * @access protected
      * @param string $servidor Servidor MySQL
      * @param string $usuario Usuario MySQL
      * @param string $clave Clave MySQL
      * @return resource|boolean
      */
     
protected function connectar $servidor NULL $usuario NULL $clave NULL )
     {
          
// ...
     
}
     
     
// ...
}

?>
Bueno, no te quiero matar con esto jaja ya que no es necesario...
Es solo una opinion mia ya que lo encuentro muy util para guiarse uno mismo o si la queres compartir (ya que para es fue hecho phpDocumentor, para los oepn source :P) pero privado o open source creo que igual es re util...

y mas que nada si usas phpDesigner...

tambien recomiendo phpDesigner para programar....tiene todo lo q se necesita, para mi el mejor programa para programar...

bueno, no me quiero ir de mano! jeje

de nuevo muy buena tu clase.... saludos y mucha suerte :)
  #6 (permalink)  
Antiguo 11/04/2009, 02:55
machoman112233
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Clase Conexion MySQL... opinion...

Bueno... ya encontre unos cuantos errores, arreglados... a ver que mas trovo... Para programar uso el PhpDesigner thepancher, lo encontre hace tiempo y me parecio un pragrama muy bueno, lo uso para todo...

Ronruby, no sabia que MySQLi es una clase... el problema es que tuve que crear un clase por que nos pidio un proyecto a clase... ahora el login...
  #7 (permalink)  
Antiguo 11/04/2009, 23:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Clase Conexion MySQL... opinion...

Tema trasladado desde PHP General.
  #8 (permalink)  
Antiguo 12/04/2009, 14:47
 
Fecha de Ingreso: diciembre-2004
Mensajes: 163
Antigüedad: 19 años, 5 meses
Puntos: 2
Respuesta: Clase Conexion MySQL... opinion...

esta buena y bastante completa, también como dijo argy la palabra var ya no se usa desde php5, y creo que genera una advertencia al utilizarla.
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 13:45.