Tienda de productos - Mostrar botón para agregar o quitar del carrito de compras

Carrito de compras con PHP y MySQL

Hoy vamos a ver cómo implementar un carrito de compras con PHP y MySQL. Vamos a poner una especie de tienda o e-commerce con PHP en donde el usuario puede agregar productos al carrito, ver su carrito de compras con el total, y quitar productos del mismo.

Para ello vamos a usar la sesión y MySQL. Con la sesión vamos a identificar al usuario y la gestión del carrito se hará a través de esta base de datos. Ten en cuenta que aquí el punto es el carrito de compras, no una tienda online.

La única desventaja que tendremos es que si el usuario abandona el carrito de compras los datos no serán eliminados, pero esto se puede arreglar implementando todo el carrito como un array en la sesión tal como lo hice en mi sistema de ventas con PHP.

Te dejaré el código completo al final del post, como siempre, gratuito y open source.

Módulos del sistema

Como lo dije, esto será más que nada un ejemplo. Tendremos el módulo de gestión de productos para agregar y eliminar productos como administradores de la tienda.

Por otro lado existirá el módulo de tienda en donde el usuario podrá agregar productos al carro y más tarde ver los productos que tiene en su cesta así como el total para terminar su compra.

Una vez que el usuario termine su compra, el programador es libre de hacer lo que guste con los productos. Es decir, puede registrar la venta, restar existencia, etcétera.

Base de datos

Antes de comenzar, te mostraré cómo configurar la base de datos. Las tablas son las siguientes:

Tenemos la tabla de los productos de la tienda y la tabla para la relación entre los productos que el usuario agrega a su cesta. Para identificar al usuario usamos su id de sesión.

Recuerda que debes crear el archivo env.php basándote en el archivo env.ejemplo.php para configurar las credenciales de la base de datos. El mío se ve así:

Para obtener la conexión tenemos la siguiente función:

Gestión de productos

Gestión de productos en PHP - Carrito de compras
Gestión de productos en PHP – Carrito de compras

Comencemos viendo la administración de productos. Las funciones que se encargan de todo ello son las siguientes:

Todo esto está dentro del archivo de funciones globales. Más tarde vamos a incluir este archivo e invocarlas. Por ejemplo, tenemos el formulario:

El mismo será enviado a guardar_producto.php en donde recibimos los datos, incluimos las funciones, invocamos al método necesario y redireccionamos. Así de simple. Este patrón se sigue en los demás archivos.

Tienda

Tienda de productos - Mostrar botón para agregar o quitar del carrito de compras
Tienda de productos – Mostrar botón para agregar o quitar del carrito de compras

Como lo dije, no es una tienda completa. Es más bien un listado de todos los productos, destinada más al usuario que agregará los productos a su carro. En este caso cada producto tiene un botón para agregar al carrito.

También se está verificando si el producto ya está en el carrito de compras, en ese caso se muestra un botón para quitarlo.

El código para mostrar esto es el siguiente:

Estamos combinando código de PHP con HTML para mostrar el valor. En este caso usamos las funciones del archivo que mencioné anteriormente y que te dejaré al final del post dentro del código completo.

Estas funciones de las que hablo nos permiten saber si el producto ya está en el carrito, obtener todos los productos, etcétera.

Agregar producto al carrito

Para agregar un producto al carrito en este ejemplo con PHP se muestra un botón dentro de un formulario que lleva el id del producto:

El action del formulario es agregar_al_carrito.php, ahí recibimos el ID e invocamos a la función pertinente:

La verdadera magia está ocurriendo en las funciones:

Lo que hacemos es obtener la conexión, iniciar la sesión si no está iniciada, obtener el id de sesión de ese usuario e insertar un registro que solo llevará el id de la sesión y el id del producto. Todo eso con sentencias preparadas para evitar inyecciones SQL.

Ya después podemos obtener los productos igualmente a través del id de sesión:

O también obtener, a través de un INNER JOIN, los detalles de los productos del carrito de compras:

Y para quitar un producto del carrito, eliminamos usando el id del producto y el de sesión:

Te repito, en este caso si el usuario abandona el carrito de compras (es decir, cierra la página y luego la sesión cuenta con otro id) los datos se quedarán ahí por siempre.

Una solución podría ser guardar los productos en la sesión, o guardar la fecha del registro de la última actividad del usuario para eliminar los registros de la base de datos periódicamente.

Carrito de compras

Ver carrito de compras con PHP - Mostrar total y botón para terminar compra
Ver carrito de compras con PHP – Mostrar total y botón para terminar compra

Ya para terminar veamos qué pasa cuando el usuario ve su cesta de compras. Simplemente obtenemos todos los productos que ha agregado y los mostramos en una tabla con un botón para quitarlos.

También mostramos el total a pagar y un botón para terminar la compra. El código es:

Por cierto, si el carrito está vacío se muestra otra cosa:

Carrito de compras vacío con PHP y MySQL
Carrito de compras vacío con PHP y MySQL

En el menú de navegación también se muestra la cantidad de elementos que hay en el carrito:

El conteo solo se muestra si el mismo es mayor que 0. Cuando el usuario termina la compra, solo se hace un var_dump de los productos; ahí el programador es libre de adaptar el proyecto a sus necesidades.

Poniendo todo junto

No he mostrado todo el código, solo el más relevante e importante que hacía falta explicar, pues si mostrara todo, el post sería demasiado extenso.

Te dejo el código completo en mi GitHub. También te recomiendo más posts sobre PHP y te invito a ver otros proyectos que he realizado.

Igualmente he implementado un carrito de compras usando JavaScript puro, puedes ver el ejemplo aquí.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “Carrito de compras con PHP y MySQL”

Dejar un comentario