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

Clase para trabajar con la bbdd

Estas en el tema de Clase para trabajar con la bbdd en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola buenas, Tengo mi propia clase para trabajar con la base de datos. Y tengo dos dudas. Ahora tengo una clase conexión, y una clase ...
  #1 (permalink)  
Antiguo 06/04/2011, 02:23
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Clase para trabajar con la bbdd

Hola buenas,

Tengo mi propia clase para trabajar con la base de datos. Y tengo dos dudas.

Ahora tengo una clase conexión, y una clase para trabajar y realizar operaciones con la bbdd, que hereda de la clase conexión... esto es correcto?

También quería saber como puedo hacer para no tener que ir pasando el identificador de conexión entre mis objetos...

Un saludo y gracias!
  #2 (permalink)  
Antiguo 06/04/2011, 03:16
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Clase para trabajar con la bbdd

Que tal miktrv,

"show me the code!", eso, sin ver el código es dificil opinar, al leer identificador pienso en mysql_*, estas utilizando el set de funciones ?, porque PDO deberia ser mandatorio.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 06/04/2011, 03:38
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: Clase para trabajar con la bbdd

Cita:
Iniciado por masterpuppet Ver Mensaje
Que tal miktrv,

"show me the code!", eso, sin ver el código es dificil opinar, al leer identificador pienso en mysql_*, estas utilizando el set de funciones ?, porque PDO deberia ser mandatorio.

Saludos.
Hola buenas,

Sí, utilizo mysql, y yo voy pasando la id de conexión generada por mysql a cada objeto que trabaja con la misma conexión.

Un saludo y gracias.
  #4 (permalink)  
Antiguo 06/04/2011, 05:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Clase para trabajar con la bbdd

Es que sin ver lo que haz hecho nadie te va a poder ayudar. Solo te pueden dar ideas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 06/04/2011, 05:39
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: Clase para trabajar con la bbdd

Cita:
Iniciado por abimaelrc Ver Mensaje
Es que sin ver lo que haz hecho nadie te va a poder ayudar. Solo te pueden dar ideas.
Hola buenas de nuevo,

Pensaba que se entendería el concepto.

Por ejemplo:

Código PHP:
$bbdd = new con(user,passserver);
$bbdd->connect();

$objectoB -> new bbdd();
$objectoB -> setConId($bbdd->getConId()); 
Un saludo!
  #6 (permalink)  
Antiguo 06/04/2011, 05:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Clase para trabajar con la bbdd

Primero, te recomiendo que trabajes con PDO y evitar el tratar de crear tu propia conexión a la base de datos (bueno a menos que estés dispuesto a crear una con C++ ).

Ahora $objectoB está mal escrito, debería ser
Código PHP:
Ver original
  1. // mal
  2. $objetoB->new bbdd();
  3.  
  4. //bien
  5. $objetoB = new bbdd();
Ahora sinceramente no entiendo lo que pretendes hacer.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 06/04/2011, 06:23
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: Clase para trabajar con la bbdd

Si... no pido que me corrijas errores de sintaxis.. es evidente que esta mal, lo único que quiero es saber si el concepto esta bien o esta mal. La idea de usar PDO esta bien, pero me gusta tener mi propia clase.. es más cómoda para mi y aprendo más creándola yo. Después habrá tiempo de usar PDO.

Lo que pretendo hacer es pasar la conexión creada a todos mis objetos sin tener que conectar, para que todas las mysql_query, tenga la id de conexión de la primera conexión.

Un saludo!
  #8 (permalink)  
Antiguo 06/04/2011, 07:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Clase para trabajar con la bbdd

Si entendí bien, tu quieres usar es lo que se cononce como patron Singleton y si no, lo otro que posiblemente entendí es que tu quieres que el objeto que contiene la información de la base de datos se pueda usar en otras consultas y entiendo que lo puedes lograr con clone. Tal vez lo que te refieres, es como puedo hacer varias consultas con la misma clase, en ese caso solo tienes que llamarla varias veces, algo así
Código PHP:
Ver original
  1. <?php
  2. $conn = new db_conn(....);
  3. $conn->query(/*primera consulta*/);
  4. $conn->query(/*segunda consulta*/);
  5. $conn->query(/*tercera consulta*/);
Si es como obtener el id de lo que hayas hecho, solo es cuestión de usar algún getter y tomar el id
Código PHP:
Ver original
  1. <?php
  2. $conn = new db_conn(....);
  3. $conn->query(/*insertando valor*/);
  4. $id = $conn->getLastInsertId();
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 06/04/2011, 07:24
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: Clase para trabajar con la bbdd

Cita:
Iniciado por abimaelrc Ver Mensaje
Si entendí bien, tu quieres usar es lo que se cononce como patron Singleton y si no, lo otro que posiblemente entendí es que tu quieres que el objeto que contiene la información de la base de datos se pueda usar en otras consultas y entiendo que lo puedes lograr con clone. Tal vez lo que te refieres, es como puedo hacer varias consultas con la misma clase, en ese caso solo tienes que llamarla varias veces, algo así
Código PHP:
Ver original
  1. <?php
  2. $conn = new db_conn(....);
  3. $conn->query(/*primera consulta*/);
  4. $conn->query(/*segunda consulta*/);
  5. $conn->query(/*tercera consulta*/);
Si es como obtener el id de lo que hayas hecho, solo es cuestión de usar algún getter y tomar el id
Código PHP:
Ver original
  1. <?php
  2. $conn = new db_conn(....);
  3. $conn->query(/*insertando valor*/);
  4. $id = $conn->getLastInsertId();
Creo que no me explico nada bien...

Imaginemos que trabajo con la base de datos con dos objetos...

los dos objetos quiero que al hacer las consultas, tengan la id de conexión igual...

cuando haces mysql_connect, este te devuelve el id de conexión.. ahora.. como hago para que mi segundo objeto no tenga que volver a conectar, y pueda coger el id de conexión del primero?

Un saludo!
  #10 (permalink)  
Antiguo 06/04/2011, 07:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Clase para trabajar con la bbdd

Pues fijate te contesté sí. Con el patrón Singleton lo puedes hacer. Aunque no es recomendable hacerlo, y te recomiendo una búsqueda en el foro para que veas varias razones del porque no se debe implementar este patrón en las conexiones.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 06/04/2011, 07:33
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: Clase para trabajar con la bbdd

Disculpa, es correcto. Si me ayudáis a entender porque no usarlo sería perfecto ;)

Gracias por tu tiempo!

Un saludo!
  #12 (permalink)  
Antiguo 06/04/2011, 08:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Clase para trabajar con la bbdd

Lo mejor es buscar en el foro, en este tema tratamos mucho eso: http://www.forosdelweb.com/f18/duda-...-clase-835534/

Saludos.
  #13 (permalink)  
Antiguo 06/04/2011, 08:45
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Respuesta: Clase para trabajar con la bbdd

Cita:
Ahora tengo una clase conexión, y una clase para trabajar y realizar operaciones con la bbdd, que hereda de la clase conexión... esto es correcto?
NO.

¿Por qué?

Por que no estas separando responsabilidades por lo que hacen tus objetos, estas heredando por reutilizar tu conexión cuando en realidad la conexión podría ser un atributo de tu objeto construido por una inyección de dependencias o un constructor de tu objeto Base de datos, tal vez con una Fabrica de Objetos.
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #14 (permalink)  
Antiguo 06/04/2011, 08:51
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: Clase para trabajar con la bbdd

Cita:
Iniciado por _ssx Ver Mensaje
NO.

¿Por qué?

Por que no estas separando responsabilidades por lo que hacen tus objetos, estas heredando por reutilizar tu conexión cuando en realidad la conexión podría ser un atributo de tu objeto construido por una inyección de dependencias o un constructor de tu objeto Base de datos, tal vez con una Fabrica de Objetos.
Hola,

Muchas gracias.. es lo que me temía... pero por comodidad.. jeje

Un saludo y gracias por vuestro tiempo!

Etiquetas: bbdd, clase, trabajo
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 20:35.