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

[APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL USO )

Estas en el tema de [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL USO ) en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola Bueno he querido liberar la siguiente clase que en los dias recientes la he publicado por pedazos. esta clase la uso mucho en mis ...
  #1 (permalink)  
Antiguo 25/08/2009, 20:21
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 7 meses
Puntos: 25
[APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL USO )

Hola Bueno he querido liberar la siguiente clase que en los dias recientes la he publicado por pedazos. esta clase la uso mucho en mis trabajos y me evita escribir tanto codigo SQL ( por que despues de todo queremos hacer las cosas rapido por cuestion de tiempo y paz mental.)

Para ello les presento esta solucion se llama phpmydbclass (el nombre no se si este ocupado jeje pero lo ando usando si desean proponer uno mas latino me avisan y por votos lo cambiamos)

bueno aqui les dejo este aporte que se que les va a ayudar mucho saludos..

Código PHP:
<?php

   
/*modo de uso ejemplo*/
  
$db phpmydbclass();
  
  
$db->db_sql('SELECT * FROM tabla');
  while(
$datos $db->db_array_query()){
   
     echo 
$datos[0];
  
 } 

?>
Código PHP:

<?php

/* Autor: Lobsang Eddwin Nate Paz Aparicio
 * Pais: San Cristobal, Tachira, Venezuela
 * Fecha Creacion: 20/09/2009
 * Ultima Actualizacion: 25/09/2009
 * Email: [email protected]
 *
 * Descripcion general: Clase para el manejo agil de consultas sql de MySQL con PHP
 * Usando Programacion Orientada a objetos, La cual posee metodos (funciones)
 * de uso comun y general en el area de el desarrollo web
 * Licencia: GPL v2
 *
 * NOTAS DEL AUTOR: Si haz usado esta clase en algun proyecto porfavor recuerda
 * que con mi esfuerzo te he hecho la vida mas facil y se que tu harias lo mismo
 * por mi. asi que recuerda a este humilde servidor en los derechos de autor
 * ATT: Lobsang Aparicio
 */

class phpmydbclass {

    private  
$id_consulta;
    private  
$id_conexion;
    private  
$servidor;
    private  
$usuario;
    private  
$clave;
    private  
$basedatos;

    
// constructor
    
public function __construct() {

        
$this->servidor    'localhost';
        
$this->usuario     'root';
        
$this->clave       '';
        
$this->basedatos   'llave_db';

        
// me conecto
        
$this->id_conexion mysql_connect($this->servidor,$this->usuario,$this->clave);
        
mysql_select_db($this->basedatos);
    }

    
/*Metodo que permite realizar una consulta SQL
     * Tipo de datos: sql([string])
     * RETORNA: [string]
     */
    
public function db_sql($sql) {

        return 
$this->id_consulta mysql_query($sql);
    }

    
/* Metodo que devuelve el numero de tuplas/registros de una consulta SQL  
     * USO: contar_tablas()
     * RETORNA: [int]
     */
    
public function db_total_tablas() {

        return 
mysql_num_rows($this->id_consulta);
    }

    
/* Metodo que convierte los resultados de una consulta SQL a un array/vector
     * USO: array_query()
     * RETORNA: [array 1 dimension]
     */
    
public function db_array_query() {

        return 
mysql_fetch_array($this->id_consulta);
    }

    
/* Metodo que limpia las variables ante una posible consulta maliciosa
     * USO: limpiar([string,int,float])
     * RETORNA: [string,int,float]
     */
    
public function db_limpiar($value) {

        if( 
get_magic_quotes_gpc() ) {

            
$value addslashes($value);
        }
        
$value trim($value);
        
$value mysql_real_escape_string($value);

        return 
$value;
    }

    
/* Metodo que devuelve el id de una consulta recientemente hecha
     * USO: id_query_actual()
     * RETORNA: [int]
     */
    
public function db_id_query() {

        return 
mysql_insert_id();
    }

    
/* Metodo que realiza la desconeccion del servidor MySQL
     * USO: desconectar()
     * RETORNA: null
     */
    
public function db_desconectar() {

        
mysql_close($this->id_conexion);
    }


    
/* Metodo que se usa para generar un select box dinamico extrayendo los
     * datos de una tabla(s) en especial
     * USO: generar_select([string],[string],[string,int,float],[string],[string])
     * RETORNA: Select Box dinamico
     */
    
public function db_generar_select($nombre_select,$value,$option,$tabla,$css) {

        
$sql "SELECT ".$value.", ".$option." FROM ".$tabla." ORDER BY ".$option."";
        
$this->db_sql($sql);

        echo 
"<select name='".$nombre_select."' id='".$nombre_select."' ".$css.">\n";
        echo 
"<option value='0'>Seleccionar opcion</option>\n";
        while(
$datos $this->array_query()) {

            echo 
"<option value='".$datos[$value]."'>".$datos[$option]."</option>\n";

        }
        echo 
'</select>';
    }

    
/* Metodo que se usa para generar una insercion sql a base de un array
     * de una sola dimension.
     * USO: insert_multiple([string],[array],[array])
     * RETORNA: true/false (verdadero/falso)
     */
    
function db_insert_multiple($tabla,$columnas,$valores) {

        
$total_columnas count($columnas)-1;
        
$total_valores =  count($valores)-1;

        
$sql .= "INSERT INTO `$tabla` (";

        for(
$i =0$i<$total_columnas$i++) {

            
$sql .= "`$columnas[$i]`, ";

        }

        
$sql .= "`".$columnas[$i]."`) ";

        
$sql .= 'VALUES (';

        for(
$i =0$i<$total_valores$i++) {

            
$sql .= "'$valores[$i]', ";

        }
        
$sql .= "'".$valores[$i]."');";

        if(
$this->db_sql($sql)) {
            return 
true;
        }
        else {
            return 
false;
        }


    }
    
/*Metodo que permite devolver la consulta SQL para verificar erroes de
     * sintaxis o simplemente validar que los datos sean correctos
     * USO: db_sql_debug()
     * RETORNA: [string]
     */
    
    
public function  db_sql_debug() {

        
$mostrar .= "<script> alert('CONSULTA SQL \n";
        
$mostrar .= $this->id_consulta;
        
$mostrar .= "'); </script>";
        echo 
$mostrar;


    }


}

?>
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.

Última edición por eddwinpaz; 26/08/2009 a las 07:24
  #2 (permalink)  
Antiguo 25/08/2009, 21:29
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 10 meses
Puntos: 13
Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

buenisimo...
asi nos ahorramos tiempo y lineas de codigo
vamos a implementarla y ver que tal nos va...

se agradece
  #3 (permalink)  
Antiguo 25/08/2009, 23:02
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 8 meses
Puntos: 101
Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

Buen aporta, recuerda que existe la funcion implode ( para unir array ).
Con el codigo que te pase en tu anterior aporte, podes reducir a 1 linea la funcion db_insert_multiple:
Código php:
Ver original
  1. return $this->sql(sprintf("INSERT INTO %s (%s) VALUES (%s)",$tabla,implode(',',$columnas),'\''.implode("','",$valores).'\''));
xD
Suerte
Salu2

PD: Donde esta la funcion sql, no sera db_sql xD
__________________
Half Music - www.halfmusic.com
  #4 (permalink)  
Antiguo 26/08/2009, 07:25
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

Gracias por sus agradecimientos.. espero seguir aportando y @phppato12 ya arregle los metodos jejeje es que habia cambiado el nombre de los metodos y se me fue por alto eso bueno.. saludos a todos
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #5 (permalink)  
Antiguo 26/08/2009, 09: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: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

¿Como puedo usar tu clase si me quiero conectar a dos bases de datos distintas (en dos servidores distintos)?
  #6 (permalink)  
Antiguo 26/08/2009, 09:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

mmm... yo sigo viendo el mismo error en
Código:
db_sql_debug()
dice... por el comentario de la clase, que devuelve la consulta... y tu estas haciendo un alert() del ID de la consulta....



y ¿eso que tiene de bueno??


además, el devolver comparaciones con return es completamente absurdo... si bien, es posible... no es correcto

Código PHP:
public function db_sql($sql) {
      
// MAL
        
return $this->id_consulta mysql_query($sql);

      
// BIEN
       
$this->sql_consulta $sql;
       
$this->id_consulta mysql_query($sql$this->id_conexion) or $this->error(mysql_error());
    return 
$this->id_consulta;
}

// ...

function error($msg) {
  die(
"$msg<pre>{$this->sql_consulta}</pre>");

de mas, agregaría el poder de capturar los errores hacia un método de la misma clase...

y si asignas el ID de conexión... usalo, no lo dejes a la deriva.... que no es de adorno!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 26/08/2009, 09:33
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: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

Aparte digo, si estas usando PHP5 ya para esta clase porque no usar Excepciones para poder hacer mejor la captura de errores , y como te digo estas atando mucho tu clase a una implementación en concreto.

Solo es un tip, te recomiendo leer este tema: http://www.forosdelweb.com/f68/les-c...uardar-727142/

Tema trasladado desde PHP General.
  #8 (permalink)  
Antiguo 27/08/2009, 17:05
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 7 meses
Puntos: 25
proximamente estare liberando una nueva version de la clase tanto con las modificaciones como observaciones de las diferentes personas de este foro.. saludos.. a todos gracias por sus comentarios que en realidad me han ayudado a sacar nuevas ideas para sacar la nueva clase.

[PROXIMA ACTUALIZACION]

- Conexion por Default a MySQL
- Posibilidad de Conexion a distintas base de datos
- Mas Generadores dinamicos. (HTML) on the fly..
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.

Última edición por GatorV; 27/08/2009 a las 21:28
  #9 (permalink)  
Antiguo 31/08/2009, 02:05
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 9 meses
Puntos: 10
Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

Cita:
Iniciado por pateketrueke Ver Mensaje
además, el devolver comparaciones con return es completamente absurdo... si bien, es posible... no es correcto
No entiendo que tiene de malo ahorrar alguna linea de codigo.... o no estoy viendo alguna cosa.... perdon si pregunto algo obvio (gracias)
  #10 (permalink)  
Antiguo 31/08/2009, 06:42
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 7 meses
Puntos: 25
Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

Cita:
Iniciado por bigwhite Ver Mensaje
No entiendo que tiene de malo ahorrar alguna linea de codigo.... o no estoy viendo alguna cosa.... perdon si pregunto algo obvio (gracias)

no he cambiado la sintaxis por que comparando con el Zend Benchmark esa sola linea de codigo consume mas memoria que haciendo 2 for loops. cuando critiquen ofrescan una solucion con "Codigo" hubo uno que lo hizo. eso me parece bien...

criticar es facil pero dar la solucion nop.
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #11 (permalink)  
Antiguo 02/09/2009, 12:07
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 15 años, 7 meses
Puntos: 7
hay una clase que ya trae PHP, en servidores como wamp no tienes que hacer mas que:

$bd = new PDO;

eso si, esta solo en ingles el manual xD, http://us3.php.net/manual/en/book.pdo.php, casi para todas las bases de datos, no esta orientada a solo una, mysql, mysqlite, MS SQL Server, entre otras

GatorV la mensiono, desde entonces la he estudiado y esta muy buena y completa, y tiene manejo de errores casi perfecto, tambien permite transacciones por si una sentencia SQL fallo, hacer un rollback, si la bd lo acepta claro

entre otras cosas, como para optimizar el codigo

Código PHP:
    public function __construct() {
        
// me conecto
        
$this->id_conexion mysql_connect('localhost''usuario','clave');
        
mysql_select_db('basededatos');
    } 
si son variables privadas, no se pueden cambiar desde afuera, a menos que las utilices en mas de un metodo, no veo razon para nombrar una variable que solo usaras una vez

Última edición por GatorV; 02/09/2009 a las 12:39
  #12 (permalink)  
Antiguo 03/09/2009, 09:28
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 7 meses
Puntos: 25
De acuerdo Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

Cita:
Iniciado por rudy69 Ver Mensaje
hay una clase que ya trae PHP, en servidores como wamp no tienes que hacer mas que:

$bd = new PDO;

eso si, esta solo en ingles el manual xD, http://us3.php.net/manual/en/book.pdo.php, casi para todas las bases de datos, no esta orientada a solo una, mysql, mysqlite, MS SQL Server, entre otras

GatorV la mensiono, desde entonces la he estudiado y esta muy buena y completa, y tiene manejo de errores casi perfecto, tambien permite transacciones por si una sentencia SQL fallo, hacer un rollback, si la bd lo acepta claro

entre otras cosas, como para optimizar el codigo

Código PHP:
    public function __construct() {
        
// me conecto
        
$this->id_conexion mysql_connect('localhost''usuario','clave');
        
mysql_select_db('basededatos');
    } 
si son variables privadas, no se pueden cambiar desde afuera, a menos que las utilices en mas de un metodo, no veo razon para nombrar una variable que solo usaras una vez
Gracias por tu aporte estare leyendola aunque la he escuchado no he sentido mucha curiosidad hacia esta libreria. De todos modos gracias.. tratare de aplicar tu sugerencia a mi nuevo release. de la clase. Saludos.
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #13 (permalink)  
Antiguo 05/09/2009, 17:28
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 9 meses
Puntos: 10
Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

Lo mejor es pasarse a ACTIVE RECORD donde te olvidas de SQL

Última edición por bigwhite; 05/09/2009 a las 20:31
  #14 (permalink)  
Antiguo 08/09/2009, 18:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 210
Antigüedad: 15 años
Puntos: 0
Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

Cita:
Iniciado por bigwhite Ver Mensaje
Lo mejor es pasarse a ACTIVE RECORD donde te olvidas de SQL
tenes algo para leer al respecto ??
  #15 (permalink)  
Antiguo 08/09/2009, 19:12
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 10 meses
Puntos: 102
Respuesta: [APORTE] Clase para el manejor agil de consultas SQL con PHP ( DE FACIL US

Comentario rápido: ¡Documentación! http://www.phpdoc.org/

Aunque la tienes, no tiene una forma estándar. Si la aplicases bien, podrás poner a disposición la documentación igual cómo página HTML, además de que un buen IDE deberá mostrarte dicha información al momento de programar, lo cuál facilita muuuucho la tarea; siempre es agradecida.

Mis 2 centavos.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 03:18.