query("SELECT id, nombre FROM products ORDER BY nombre ASC"); $productos = $stmt_products->fetchAll(PDO::FETCH_ASSOC); // Obtener videos existentes $stmt_videos = $db->query("SELECT mv.*, p.nombre as nombre_producto FROM marketing_videos mv LEFT JOIN products p ON mv.producto_id = p.id ORDER BY mv.orden ASC, mv.fecha_creacion DESC"); $videos = $stmt_videos->fetchAll(PDO::FETCH_ASSOC); $statusOptions = ['PENDIENTE', 'EN PROCESO', 'TERMINADO', 'OBSERVADO', 'APROBADO', 'PUBLICADO']; function marketing_status_badge_class(?string $estado): string { return match ($estado) { 'PENDIENTE' => 'bg-warning text-dark', 'EN PROCESO' => 'bg-info text-white', 'TERMINADO' => 'bg-primary text-white', 'OBSERVADO' => 'bg-danger text-white', 'APROBADO' => 'bg-success text-white', 'PUBLICADO' => 'bg-dark text-white', default => 'bg-secondary text-white', }; } // Contadores de estado $stats = [ 'TOTAL' => count($videos), 'PENDIENTE' => 0, 'EN PROCESO' => 0, 'TERMINADO' => 0, 'APROBADO' => 0 ]; foreach ($videos as $v) { if (isset($stats[$v['estado']])) { $stats[$v['estado']]++; } } ?>
Total Pedidos

Pendientes

En Proceso

Terminados

Aprobados

Producción de Video

Gestión de activos y flujo de trabajo creativo

La columna Observación se guarda al salir del campo y Estado al cambiar la opción.

Biblioteca
# Fecha Entrega Producto Imagen Material Ángulo Insp. Landing Video Ref. Link Video Link Landing Link Flyer Observación Estado Acción
No hay pedidos registrados.
-'; ?>
Ref
-'; ?>
-'; ?>
- - - - -
Producto
Entrega:
Orden:
MATERIAL:
No especificado'; ?>