Ver Mensaje Individual
  #13 (permalink)  
Antiguo 11/12/2012, 09:09
Agrey
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 20 años, 6 meses
Puntos: 1
Respuesta: Mi primer código POO - Dudas

Buenas!!!
Sigue aquí peleándome con mis primeras clases y como dice cluster28 Aquí no hay pócima secreta. Sólo hace falta tiempo

He modificado mis clases y el objetivo es obtener un listado de todos los usuarios y por cada usuario obtener el número de pedidos.

Tengo la clase conexion, donde se conecta se ejecuta la sql y se cierra la conexion
Código PHP:
class conexion
{
  private 
$servidor;
  private 
$usuario;
  private 
$password;
  private 
$bd;
  private 
$database;
  
  public function 
__construct($servidor"localhost"$usuario "root"$password =   ""$bd "abm")
  {
      
$this->servidor=$servidor;
      
$this->usuario=$usuario;
      
$this->password=$password;
      
$this->bd=$bd;
      
$this->database = new mysqli($servidor$usuario$password$bd);
      if (
$this->database->connect_error) {
          die(
"Error (" $this->database->connect_errno ") "$this->database->connect_error);
      }
  }
  public function 
ejecutar($sql// ejecuta consulta
  
{
    return 
mysqli_query($this->database,$sql);        
  }    
  public function 
limpiar() // libera la consulta
  
{
      
mysqli_free_result($this->database);
  }
  public function 
cerrar() // cierra la conexion
  
{
    
$this->database->Close();
  }            

Luego otra clase usuario que lista los usuarios

Código PHP:
class usuario
{
  public function 
__construct()
  {
         
  }
  public function 
listar()
  {
    
$obj_cliente=new conexion();
    
$sql="select * from clientes";
    
$result=$obj_cliente->ejecutar($sql);
    return 
$result;
    
$obj_cliente->limpiar();
    
$obj_cliente->cerrar();
  }   

y una clase productos que obtiene los productos de un determinado cliente
Código PHP:
class productos
{
  public function 
__construct()
  {
         
  } 
  public function 
listar_productos($id)
  {
    
$sql="select * from productos WHERE id='".$id."'"
    
$obj_cliente=new conexion();    
        
$result=$obj_cliente->ejecutar($sql);
    return 
$result;    
    
$obj_cliente->limpiar();
    
$obj_cliente->cerrar();        
  }     

El código php que llama a los objetos:
Código PHP:
        $cliente=new usuario();
        
$result=$cliente->listar();
          if(
$result) {
              if (
$result->num_rows!=0)
              {
                 
$productos=new productos();                  
                  while (
$rowCam $result->fetch_row())
                  {
                      echo 
$rowCam[1]."-";
                      
$prod=$productos->listar_productos($rowCam[1]);
                      echo 
$prod->num_rows."<br />";
                  }
              }
          } 
No me da ningún error pero no veo muy claro que lo esté haciendo bien. Eso de estar llamando constantemente new conexion() desde los métodos no lo veo muy profesional jeje

Es abusar pero ... ¿como sería esto?
Un saludo y desde ya muchas gracias!!!