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!!!