Ejercicio Tienda

Vamos a crear una clase para rellenar elementos de la tienda, se llamará testTienda

En la clase tendremos un constructor que se conectará a la base de datos automáticamente (igual a como lo hemos estado haciendo).

Tendrá un método addCategorias(numero) que nos añadirá el número de categorías que le pongamos (por defecto 5). Con los nombres ‘Categoria1’, ‘Categoria2’,…

Tendrá un método addProductos(idCategoria,numero) que nos añadirá el número de productos que le pongamos (por defecto 5). Con los nombres ‘Producto1’, ‘Producto2’… el precio a cero y la categoría que le pasemos.

Tendrá un método addCatProd(categoria, producto) que pasándole el nombre de una categoría y el nombre de un producto nos añada a la base de datos esa categoría y ese producto haciendo que pertenezca a esa categoría.


class testTienda {

private $server = "localhost";
private $user = "root";
private $password = "";
private $db = "tienda_jp";
protected $conn;

function __construct() {
try {
$this->conn = new PDO("mysql:host=$this->server;dbname=$this->db;charset=UTF8", $this->user, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
throw new Exception("Connection failed: " . $e->getMessage());
}
}

function addCategorias($numero = 5) {
try {
for ($i = 1; $i <= $numero; $i++) {
$sql = "insert into categorias (nombre) values ('Categoría$i')";
$this->conn->exec($sql);
}
} catch (Exception $ex) {
echo $ex->getMessage();
}
}

function addProducto($idCategoria, $numero = 5) {
try {

$sql = "insert into productos (nombre,idcategoria) values (:nombre,:idcategoria)";
$st = $this->conn->prepare($sql);
for ($i = 1; $i <= $numero; $i++) {
$st->execute(['nombre' => "Producto$i", "idcategoria" => $idCategoria]);
}
} catch (Exception $ex) {
echo $ex->getMessage();
}
}

function addCatProd($producto, $categoria) {
try {
$sql = "insert into categorias (nombre) values (:nombre)";
$st = $this->conn->prepare($sql);
$st->execute(['nombre' => $categoria]);
$id = $this->conn->lastInsertId();
$sql = "insert into productos (nombre,idcategoria) values (:nombre,:idcategoria)";
$st = $this->conn->prepare($sql);
$st->execute(['nombre' => $producto, "idcategoria" => $id]);
} catch (Exception $ex) {
echo $ex->getMessage();
}
}

}