92 Modificando tabla CARRITO para el REGISTRO en el SISTEMA DE VENTAS (PHP y MySql) FullStack

Duraci贸n: 6 min
M贸dulo: 馃洅 L贸gica del Carrito y Clientes Din谩micos Lecci贸n 5 de 16

Descripci贸n

Lecci贸n 92: Modificaci贸n de la Tabla CARRITO para el Registro de Ventas (FullStack) 馃敡馃洅

Este video aborda y soluciona un error clave de l贸gica en el modelo de base de datos que imped铆a la correcta inserci贸n de productos en la tabla tb_carrito. El problema principal era la dependencia de la clave for谩nea ID_venta, ya que el registro en tb_carrito ocurre antes de que la venta final exista en la tabla tb_ventas.

1. Soluci贸n del Problema de la Clave For谩nea 馃攽

La soluci贸n consisti贸 en reemplazar la relaci贸n estricta de ID_venta con el campo m谩s flexible numero_venta:

  1. Modificaci贸n de tb_carrito: Se elimin贸 la referencia de clave for谩nea (FK) y se renombr贸 el campo ID_venta a numero_venta (INT) [00:43]. Este campo ahora almacena el n煤mero secuencial de la venta (ej. Venta 1, Venta 2, etc.), que ya es conocido antes de que la venta se guarde.
  2. Modificaci贸n de tb_ventas: Se agreg贸 un nuevo campo llamado numero_venta (INT) a la tabla tb_ventas [02:16].
  3. Nueva Relaci贸n: Se cre贸 una nueva relaci贸n (FK) entre el campo numero_venta de la tabla tb_ventas y el campo numero_venta de la tabla tb_carrito [03:12].

Al usar numero_venta en lugar de ID_venta, se permite que los productos del carrito se registren primero, y luego la venta en tb_ventas se puede enlazar usando el mismo n煤mero secuencial.

2. Ajustes en la L贸gica de Inserci贸n (PHP/MySQL) 馃攧

Se actualiz贸 el controlador (registrar_carrito.php) y el script de JavaScript para reflejar el cambio de campo:

  • Variables Actualizadas: En lugar de enviar y recibir id_venta, ahora se utiliza la variable numero_venta [03:55].
  • Consulta SQL: La consulta de inserci贸n en tb_carrito se modific贸 para recibir el numero_venta [04:07]:

    SQL

    INSERT INTO tb_carrito (numero_venta, id_producto, cantidad, fyh_creacion) VALUES (:numero_venta, :id_producto, :cantidad, :fyh_creacion)

3. Resultado Final de la Inserci贸n 馃И

La prueba de funcionalidad confirm贸 que el registro ahora se realiza correctamente. Al seleccionar un producto y hacer clic en "Registrar", la tabla tb_carrito se llena con [04:46]:

  • El n煤mero de venta (ej. 1).
  • El ID del producto.
  • La cantidad solicitada.

El pr贸ximo paso ser谩 recuperar esta informaci贸n de la tabla tb_carrito y mostrarla autom谩ticamente en la tabla del carrito de la vista create.php, junto con los c谩lculos de subtotales [05:38].