elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [PHP POO] clsDB By WebMonster
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [PHP POO] clsDB By WebMonster  (Leído 3,974 veces)
WebMonster

Desconectado Desconectado

Mensajes: 8

El Monstruo de la Web xD


Ver Perfil
[PHP POO] clsDB By WebMonster
« en: 8 Noviembre 2010, 05:52 am »

Esta es una clase hecha por mi que siempre la utilizo en mis proyectos :p

Código:
<?php
/*
Clase hecha por: WebMonster
Publicada en: elhacker.net
Puedes utilizar, modificar y publicar este codigo como y donde quieras pero debes mencionar siempre el autor original y la fuente.
*/

// Definimos la clase
class DataBase{
// Creamos variables
private $servidor="localhost";
private $usuario="TU_USUARIO";
private $pass="TU_CONTRASEÑA";
private $nombre="TU_BASE_DE_DATOS";
private $conexion;
// Método Conectar
function Conectar(){
$this->conexion = mysql_connect($this->servidor,$this->usuario,$this->pass) or die('Hay un problema al conectar con la base de datos');
mysql_select_db($this->nombre,$this->conexion) or die('Hay un problema con la seleccion de la DB');
}
// Método Query
function Query($query){
// Pasamos el query a mayusculas.
$query_mayusculas = strtoupper($query);
// Tomamos las primeras 6 letras del query
$tipo_query = substr($query,0,6);
// Hacemos un switch para saber que tipo de query es y efectuar las acciones necesarios
switch($tipo_query){
case "SELECT":
$consulta_sql = mysql_query($query, $this->conexion) or die(mysql_error());
return $consulta_sql;
break;
case "DELETE":
case "UPDATE":
case "TRUNCA":
mysql_query($query, $this->conexion) or die(mysql_error());
break;
case "INSERT":
mysql_query($query, $this->conexion) or die(mysql_error());
return mysql_insert_id($this->conexion);
break;
}
}

// Método Desconectar - Nos desconecta de la DB
function Desconectar(){
mysql_close($this->conexion);
}
}

- Cuando se hace un Select devuelve los resultados del mismo.
- Cuando se hace un insert devuelve el ultimo id
- Con Truncate, Delete y Update no devuelve nada.

Ejemplo de uso:

Código:
$conexion = new DataBase;
$conexion -> Conectar();
$guardar_datos = $conexion -> Query("SELECT * FROM config");
$conexion -> Desconectar();


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: [PHP POO] clsDB By WebMonster
« Respuesta #1 en: 8 Noviembre 2010, 16:59 pm »

Hay algo que no entendí en las siguientes lineas,
Código
  1. case "DELETE":
  2. case "UPDATE":
  3. case "TRUNCA":

Entonces que hace?, es decir, no se ejecutaría la Query?


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: [PHP POO] clsDB By WebMonster
« Respuesta #2 en: 8 Noviembre 2010, 17:49 pm »

agrupa los 3 en el mismo bloque.
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: [PHP POO] clsDB By WebMonster
« Respuesta #3 en: 8 Noviembre 2010, 18:05 pm »

Y... mi pregunta es, donde, cómo, cuando se ejecuta la query?
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: [PHP POO] clsDB By WebMonster
« Respuesta #4 en: 8 Noviembre 2010, 18:08 pm »

Código:

case "DELETE":
case "UPDATE":
case "TRUNCA":
[b]mysql_query($query, $this->conexion) or die(mysql_error());[/b] <-- aqui.
break;
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: [PHP POO] clsDB By WebMonster
« Respuesta #5 en: 8 Noviembre 2010, 18:15 pm »

Ahh ok ok ok, xD, no sabía de la agrupación así. Me toco hacer un PoC XD
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: [PHP POO] clsDB By WebMonster
« Respuesta #6 en: 8 Noviembre 2010, 18:17 pm »

es porque no usa break en los  case "DELETE" y "UPDATE", si esas son las opciones pasa al case "TRUNCA".


Una sugerencia, si en cada case haces lo mismo:
mysql_query($query, $this->conexion) or die(mysql_error());

entonces, hazlo fuera del switch y el case dejalo para los return
En línea

WebMonster

Desconectado Desconectado

Mensajes: 8

El Monstruo de la Web xD


Ver Perfil
Re: [PHP POO] clsDB By WebMonster
« Respuesta #7 en: 8 Noviembre 2010, 19:18 pm »

cassiani la sugerencia esta bien solo que hay un inconveniente. En caso de ponerlo fuera del switch tendria que ser antes del mismo y no despues ya que los return dependen de la consulta. se entiende?
Ahora supon que lo hago antes... no puedo porque en caso que sea select, dicho query se guarda en una variable, en caso que sea update, insert o truncate se ejecutan y ya por lo tanto antes de hacer la consulta debo saber si tengo que guardarla o no, lo que me obliga a hacerlo dentro del swtich.
En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: [PHP POO] clsDB By WebMonster
« Respuesta #8 en: 8 Noviembre 2010, 19:28 pm »

creo que el se refiere a ponerlo despues, como no usas la case default si la consulta no entra a ninguna condicion se ejecutara despues del switch el mysql_query con la consulta.
En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: [PHP POO] clsDB By WebMonster
« Respuesta #9 en: 8 Noviembre 2010, 20:05 pm »

Bueno, a algo así me refería, aquí no veo la necesidad de usar el switch:

Código
  1. function Query($query)
  2. {
  3. $sClausula = strtoupper(substr($query,0,6));
  4. $result = mysql_query($query, $this->conexion) or die(mysql_error());
  5. $sArrayClausulas = array('SELECT','INSERT');
  6. if (in_array($sClausula,$sArrayClausulas))
  7. return $sClausula == 'SELECT' ? $result : mysql_insert_id($this->conexion);
  8. }

El array te lo evitas si no usas mas clausulas y haces entonces la validación una por una
Pruebalo a ver que resultados te da.

saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines