38 CONTROLLER UPDATE PRODUCTOS desde el FORMULARIO del Sistema de Ventas con (PHP y MySql)FullStack
Duración: 23 minDescripción
Lección 38: Controlador de Actualización de Productos (UPDATE) 💾🔄
Esta lección se enfoca en el desarrollo del controlador del lado del servidor (update.php) necesario para procesar los datos del formulario de edición y ejecutar la consulta UPDATE en la base de datos, incluyendo la lógica crucial para manejar el posible reemplazo de la imagen del producto.
1. 📋 Configuración y Recepción de Datos
Se configura el formulario de edición (update.php) para que envíe los datos al nuevo controlador y se recopilan las variables necesarias:
- Destino del Formulario: Se modifica el atributo action del formulario en update.php para que apunte al controlador almacen/update.php y se utiliza el método POST [01:08].
- Envío del ID: Para que la consulta UPDATE sepa qué registro modificar, se añade un campo oculto (type="hidden") en la vista de edición. Este campo contiene el id_producto y se envía junto con el resto de los datos [04:29].
- Recepción en el Controlador: El controlador update.php recopila todas las variables enviadas por POST, incluyendo todos los campos editables (nombre, descripción, stock, precios, etc.) y el id_producto [04:39].
2. 📝 Ejecución de la Consulta UPDATE
Se construye y ejecuta la sentencia SQL para actualizar los datos:
- Sentencia SQL: Se crea la consulta UPDATE almacen SET columna1 = ?, columna2 = ? WHERE id_producto = ? [05:07].
- Parámetros: Se pasan los 13 parámetros correspondientes a los campos del producto, además de la fecha y hora de actualización y el id_producto para la condición WHERE [08:43].
3. 🖼️ Lógica Condicional para la Imagen
La parte más compleja es la actualización de la imagen, ya que el usuario puede o no seleccionar un nuevo archivo.
A. Identificación de la Imagen Anterior
Para mantener la imagen si el usuario no selecciona una nueva, se necesita el nombre del archivo actual:
- Campo Oculto para Imagen Antigua: Se añade otro campo oculto en la vista de edición para enviar el nombre de la imagen actualmente registrada en la base de datos (Ej: 20230131102500_audifonos.jpg) [14:42]. Este valor es crucial.
B. Flujo Condicional en update.php
Se implementa una estructura if/else para determinar si hay un archivo nuevo [11:00]:
- Si Hay Imagen Nueva ($_FILES['image']['name'] es diferente de nulo):
- Proceso de Subida: Se invoca la misma lógica de subida y renombramiento único utilizada en la acción CREATE (concatenando fecha/hora y nombre) [15:45].
- Movimiento: Se mueve el nuevo archivo a la carpeta img/productos.
- Variable de Imagen: La variable que se insertará en la base de datos ($imagen) se establece con el nombre único del nuevo archivo [16:38].
- Si No Hay Imagen Nueva (else):
- Variable de Imagen: La variable que se insertará en la base de datos ($imagen) se establece con el nombre de la imagen antigua (tomado del campo oculto image_texto), asegurando que la ruta en la base de datos no se borre ni cambie [16:58].
Finalmente, la consulta UPDATE utiliza la variable $imagen (ya sea con el nombre nuevo o el antiguo) para persistir la información correcta en la base de datos.
4. ✅ Prueba y Resultado
Las pruebas confirman que el controlador funciona correctamente en ambos escenarios:
- Actualización de Datos e Imagen: Los datos se modifican y la imagen se reemplaza por la nueva. Un nuevo archivo se añade al servidor [20:06].
- Actualización Solo de Datos: El nombre o los precios se modifican, pero la imagen y su registro en la base de datos se mantienen inalterados [21:40].
Con esto, las operaciones CREATE, READ y UPDATE del módulo de productos están completas. El siguiente paso será implementar la acción de ELIMINAR (DELETE).
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️