Blog de tecnología, desarrollo de aplicaciones web, sistemas operativos, etc.
4. Sistema Web para Cafetería con MVC – Modulo de Productos para CLIENTES y Carrito
Parte 1 – «Galería de Productos»
Ahora toca la parte para el diseño de una galería de productos, de la cual el cliente podrá seleccionar para añadir a su carrito de compras
productos.php
El método getProductos() del ControladorProductos, se ejecuta junto con la sección, de modo que cuando abramos productos.php en automático invocamos a dicho método
Método getProductos() – ControladorProductos
Este método se encarga de solicitar al método selectPrdocutos() del ModeloProductos el listado de los productos que tenemos en la BD, y de mostrarlos en forma de CARD’s dentro de la sección productos.php
Método selectProductos() – ModeloProductos
Este método lo utilizamos aquí para devolver un ARRAY con los productos que tenemos en la BD.
*** el mismo método ya lo habíamos utilizado para mostrar el listado de productos pero en el menú de Administración de productos.
Parte 2 – Añadir productos al carrito
La BD, en este punto a nuestro carrito podremos agregar productos, los cuales estarán asociados a un Usuario en un momento determinado, es decir, una vez confirmado el pedido.. el carrito volverá a quedar vacío, para poder hacer mas compras.
La vista productos.php
getProductos() como ya sabemos, muestra cada producto en un CARD y tambien muestra un botón Añadir Carrito
El botón Añadir al carrito, produce varios parametros GET en nuestra URL de la sección productos, el principal, es action, ya que por medio de el podremos ejecutar el método correspondiente en nuestro ControladorPedidos
Clase ControladorPedidos.php y método agregarProductoCarrito() – ControladorPedidos
Cuando presionamos el botón Añadir al carrito llegamos a este método, en el cual llenamos un arreglo con los datos necesarios para llenar la tabla de la BD correspondiente:
****** NOTA ****** id_usuario lo obtenemos en el método de login() de ControladorLogin id_producto lo obtenemos por medio del parámetro GET al presionar Añadir al carrito, al igual que cantidad y precio
agregarProductoModelo() – ModeloPedidos
El Método tienen dos partes: 1.- Nos aseguramos por medio de una consulta SELECT, que no exista en la tabla carrito, un id de producto y un id de usuario, que coincida con el usuario actual. 2.- En caso de que no exista lo anterior, procedemos a añadir al carrito mediante un INSERT la información correspondiente.
Con lo anterior, garantizamos que en una SESIÓN determinada solamente exista un producto de un tipo para cada usuario.
Parte 3 – Sección Ver Carrito
Una vez que tenemos los productos en nuestro carrito, lo siguiente sería ver si estamos de acuerdo con lo que estamos ordenando.
carrito.php
Cuando damos click en la opción de Ver Carrito, invocamos a la sección carrito.php
carrito.php
Imagen 1 .- Tenemos la llamada al metodo listaProductosCarrito() que se encarga de solicitar la información de los productos que el usuario desea comprarImagen 2.- Para cada producto que el usuario añadió dibujamos una fila (renglón) de la tabla, pero ademas creamos un formulario dentro de cada fila, el cual nos permitirá modificar las cantidades de cada producto y ademas eliminar un producto en caso de no querer comprarlo.Imagen 3.- Al pie de la tabla y usando las variables $total y $subtotal que se ven definidas en la Imagen 2, sumamos y acumulamos el valor resultante multiplicar el costo unitario del producto por la cantidad de ese producto y lo acumulamos en $total para todos los productos, teniendo así el total de la compra.
Este método se encarga de solicitar al método selectProductos() del ModeloPedidos, la información completa del producto que esta en el carrito, la cual se obtiene por medio de una VIEW de BD llamada vista_carrito
View vista_carrito
Así podremos ver la información completa de los product os del carrito.Estructura de la vista
Método selectProductos() – ModeloPedidos
En este método realizamos la consulta SELECT a la vista pero con el condicional WHERE para traer solamente los productos que el usuario añadió al carrito. Y retornamos un ARRAY con dicha información