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

PHP OO Creacion de Mi clase de manejo de db

Estas en el tema de Creacion de Mi clase de manejo de db en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola estoy tratando de crear mi clase de manejo de db, osea que se conecte, ejecute una consulta y procese los datos. Ejemplo: $db = ...
  #1 (permalink)  
Antiguo 09/11/2010, 20:54
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 15 años, 6 meses
Puntos: 4
Creacion de Mi clase de manejo de db

Hola estoy tratando de crear mi clase de manejo de db, osea que se conecte, ejecute una consulta y procese los datos.

Ejemplo:

$db = new coneccion(mysql);
$db -> Conect(base,user,pass,host);
$get = $db->Query("...")->Array();


Por lo que pude mas o menos leer, para hacerlo de la manera que yo lo nececito, tengo que eredar clases, ejemplo:

class coneccion
{
public function coneccion()
{
return new database();
}
}

Pero no entiendo la forma de adaptar esto a mis nececidades.

Para explicar mas o menos lo que quiero hacer, es algo parecido a adodb.
  #2 (permalink)  
Antiguo 09/11/2010, 21:18
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 8 meses
Puntos: 461
Respuesta: Creacion de Mi clase de manejo de db

que tanto sabes de OOP?? xq si conoces lo que tienes es que decidir lo que tu necesitas fijate lo que mas o menos realizamos aca con una duda que me surgio, claro para esto debes de por lo menos tener algo de nocion de OOP saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 09/11/2010, 23:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Tema movido desde PHP a Frameworks y PHP orientado a objetos
  #4 (permalink)  
Antiguo 10/11/2010, 08:56
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 15 años, 6 meses
Puntos: 4
Respuesta: Creacion de Mi clase de manejo de db

Leyendo algo mas o menos voy armando esto:
Código PHP:
class DataBase
{
    var 
$Coneccion;
    var 
$Consulta;
    
    public function 
DataBase($host,$user,$pass)
    {
        
$this->Coneccion mssql_connect($host,$user,$pass) or die ('Error de Coneccion');
        return 
true;
    }
    
    public function 
Connect($db)
    {
        
$this->Coneccion mssql_select_db($db,$this->Coneccion);
    }
    
    public function 
Execute($query)
    {
        
$this->Consulta = new Query($query,$this->Coneccion);
        return 
$this->Consulta;
    }
    
    public function 
Resultados()
    {
        
$this->Coneccion;
        return 
mssql_fetch_array($this->Consulta);
    }
}

class 
Query extends DataBase
{
    public function 
Query($query,$cid)
    {
        
$cid;
        return 
mssql_query($query);
    }

Usandolo de este Modo:
Código PHP:
$db = new DataBase('127.0.0.1,1433','sa','1234');
$db->Connect('Clientes');
$db->Execute("SELECT * FROM Usuarios")->Resultados(); 
Pero me esta dando este error:
Código:
Warning: mssql_fetch_array() expects parameter 1 to be resource, null given in C:\xampp\htdocs\index.php on line 29
  #5 (permalink)  
Antiguo 10/11/2010, 09:02
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 9 meses
Puntos: 15
Respuesta: Creacion de Mi clase de manejo de db

te esta diciendo que cuando llamas resultados. el parametro que le pasas es null mira que es lo que te retorna la consulta y que es lo que le pasas a la funcion.}


saludos
  #6 (permalink)  
Antiguo 10/11/2010, 09:18
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 15 años, 6 meses
Puntos: 4
Respuesta: Creacion de Mi clase de manejo de db

Si eso ya lo se, pero creeria que lo que estoy haciendo esta bien, osea

la variable coneccion esta bien.
Pero la query debuelta creo que no sirve, por eso coloco el codigo para ver si alguien me pude decir en que estoy mal, en esa parte.
  #7 (permalink)  
Antiguo 11/11/2010, 08:09
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 9 meses
Puntos: 15
Respuesta: Creacion de Mi clase de manejo de db

porque no pruebas haciendo

la cosulta asi

$this->resultados=mssql_query($query);


saludos
  #8 (permalink)  
Antiguo 17/11/2010, 20:33
 
Fecha de Ingreso: noviembre-2010
Ubicación: León, Nic.
Mensajes: 13
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Creacion de Mi clase de manejo de db

Hola y saludos.

Código PHP:
Ver original
  1. public function Execute($query)
  2.     {
  3.         $this->Consulta = new Query($query,$this->Coneccion);
  4.         return $this->Consulta;
  5.     }
  6.      
  7.     public function Resultados()
  8.     {
  9.         $this->Coneccion;
  10.         return mssql_fetch_array($this->Consulta);
  11.     }

El parámetro que estás pasando a mssql_fetch_array, desde el método Resultado, no es una consulta sino una instancia de la clase Query; esto es porque en el método Execute has dicho que $this->consulta=new Query().

Ahora, en la clase Query, tienes un constructor, que devuelve una consulta válida, el problema es que $this->consulta=new Query será siempre una instancia de clase, pues los constructores no pueden devolver valores.

En el método Execute puedes sortear el problema así:
Código PHP:
Ver original
  1. //  debemos modificar ligeramente el método Resultados
  2.  public function Resultados()
  3.     {
  4.         $this->Coneccion;
  5.         return mssql_fetch_array($this->Consulta->getQuery());
  6.     }
  7. //la clase Query sería
  8.  
  9. class Query extends DataBase
  10. {
  11.  private $query;
  12.  
  13.     public function Query($query,$cid)
  14.     {
  15.         $cid;
  16.         $this->query=mssql_query($query);
  17.     }
  18.  
  19.     public function getQuery()
  20.    {
  21.         return $this->query;
  22.    }
  23. }

Etiquetas: clase, manejo
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:18.