44 Cargar imagen del PRODUCTO al PROYECTO en el SISTEMA VETERINARIO(PHP y MySql)FullStack

Duración: 15 min
Módulo: 📦 CRUD Completo de Productos y Relaciones de Tablas Lección 7 de 13

Descripción

🎬 Lección 44: Carga de Imagen y Finalización del Controlador CREATE 💾

El objetivo principal de esta lección es implementar el código PHP para mover físicamente el archivo de imagen cargado por el usuario al directorio del proyecto y asegurar que todos los campos, incluido el ID del usuario, se envíen correctamente.

1. Carga Física de la Imagen al Servidor 🖼️

Para subir la imagen al proyecto, se utiliza la función nativa de PHP:

  • Función Clave: Se usa move_uploaded_file [00:13], la cual requiere dos parámetros: la ubicación temporal del archivo ($_FILES['file']['tmp_name']) y la ruta de destino final.
  • Ruta de Destino ($location): Se define la ruta de la carpeta public/imagenes/productos navegando de forma relativa desde el archivo del controlador. [01:06]

2. Generación de Nombre de Archivo Único 🔒

El instructor implementa una medida de seguridad esencial para evitar conflictos de nombres que podrían sobrescribir archivos existentes:

  • Concatenación de Tiempo: El nombre del archivo que se guardará se genera concatenando la fecha y hora exactas (año, mes, día, hora, minuto y segundo) con el nombre original del archivo. [06:07]
  • Registro en la DB: Este nombre de archivo único generado es el que finalmente se almacena en la columna imagen de la base de datos, garantizando que cada producto apunte a un archivo distinto. [08:20]

3. Ajustes Finales al Formulario y el ID de Usuario

Se realizan correcciones en el formulario para asegurar que todos los datos necesarios lleguen al controlador:

  • Envío del Código: El campo Código se duplica: uno permanece con el atributo disabled para la visualización del usuario, y el otro se convierte en un campo hidden (type="hidden") para que el valor sea enviado correctamente en la petición POST. [13:08]
  • Obtención del ID de Usuario: Para registrar qué usuario creó el producto, se realiza una consulta adicional al inicio de la vista para obtener el ID_usuario basado en la sesión de correo electrónico actual. Este ID se inserta en un campo hidden (name="ID_usuario") dentro del formulario. [12:32]

El video concluye con una prueba exitosa donde se registra un producto, se sube la imagen al proyecto con un nombre único y todos los datos se insertan correctamente en MySQL.

El próximo capítulo abordará la acción Show (mostrar los datos completos del producto en una ventana modal). [14:59]