Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Formaciones
/
Modelos
:
FormacionModelo.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php // Modelos/FormacionModelo.php class FormacionModelo { private $db; public function __construct($db) { $this->db = $db; } public function getDB() { return $this->db; } public function guardar($area, $tipo_formacion, $cedula, $responsable, $cargo, $f_ini, $f_fin, $temas, $file_data, $quien_registra) { // LOG PARA DEBUGGING error_log("=== MODELO GUARDAR - PARÁMETROS RECIBIDOS ==="); error_log("1. area: " . $area); error_log("2. tipo_formacion: " . $tipo_formacion); error_log("3. cedula: " . $cedula); error_log("4. responsable: " . $responsable); error_log("5. cargo: " . $cargo); error_log("6. f_ini: " . $f_ini); error_log("7. f_fin: " . $f_fin); error_log("8. temas: " . $temas); error_log("9. file_data: " . (($file_data !== null) ? strlen($file_data) . ' bytes' : 'NULL')); error_log("10. quien_registra: " . $quien_registra); // SQL con las 10 columnas + created_at (NOW()) $sql = "INSERT INTO formacion ( area, tipo_formacion, cedula_usuario, capacitador, cargoCap, fecha_Inicial, fecha_Final, temas, evidencia_datos, namePro, created_at ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())"; error_log("SQL Query: " . $sql); $stmt = $this->db->prepare($sql); if (!$stmt) { error_log("❌ ERROR preparando statement: " . $this->db->error); return false; } $null = NULL; // BIND: 8 strings + 1 blob + 1 string = ssssssssbs // Posiciones: 1=area, 2=tipo_formacion, 3=cedula, 4=responsable, 5=cargo, // 6=f_ini, 7=f_fin, 8=temas, 9=evidencia_datos(blob), 10=quien_registra $bind_result = $stmt->bind_param("ssssssssbs", $area, // 1 - string $tipo_formacion, // 2 - string $cedula, // 3 - string $responsable, // 4 - string $cargo, // 5 - string $f_ini, // 6 - string (date) $f_fin, // 7 - string (date) $temas, // 8 - string (text) $null, // 9 - blob (evidencia_datos) - se envía con send_long_data $quien_registra // 10 - string (namePro) ); if (!$bind_result) { error_log("❌ ERROR en bind_param: " . $stmt->error); return false; } // Enviar el archivo PDF si existe (índice 8 = 9º parámetro) if ($file_data !== null) { $resultado_long_data = $stmt->send_long_data(8, $file_data); if ($resultado_long_data) { error_log("✅ PDF enviado correctamente: " . strlen($file_data) . " bytes"); } else { error_log("❌ ERROR enviando PDF"); } } // Ejecutar la consulta $resultado = $stmt->execute(); if ($resultado) { error_log("✅ INSERT ejecutado exitosamente. ID: " . $this->db->insert_id); } else { error_log("❌ ERROR ejecutando INSERT: " . $stmt->error); error_log("❌ Errno: " . $stmt->errno); } $stmt->close(); return $resultado; } public function listarPaginadas($busqueda = '', $limit = 10, $offset = 0) { $sql = "SELECT i.*, u.name as nombre_usuario FROM formacion i LEFT JOIN users u ON i.cedula_usuario = u.cedula WHERE 1=1"; if (!empty($busqueda)) { $sql .= " AND (i.area LIKE ? OR i.cedula_usuario LIKE ? OR i.capacitador LIKE ?)"; } $sql .= " ORDER BY i.created_at DESC LIMIT ? OFFSET ?"; $stmt = $this->db->prepare($sql); if (!empty($busqueda)) { $term = "%$busqueda%"; $stmt->bind_param("sssii", $term, $term, $term, $limit, $offset); } else { $stmt->bind_param("ii", $limit, $offset); } $stmt->execute(); return $stmt->get_result(); } public function contarTodas($busqueda = '') { $sql = "SELECT COUNT(*) as total FROM formacion i WHERE 1=1"; if (!empty($busqueda)) { $sql .= " AND (area LIKE ? OR cedula_usuario LIKE ? OR capacitador LIKE ?)"; $stmt = $this->db->prepare($sql); $term = "%$busqueda%"; $stmt->bind_param("sss", $term, $term, $term); } else { $stmt = $this->db->prepare($sql); } $stmt->execute(); return $stmt->get_result()->fetch_assoc()['total']; } public function obtenerPorId($id) { $stmt = $this->db->prepare("SELECT * FROM formacion WHERE id = ?"); $stmt->bind_param("i", $id); $stmt->execute(); return $stmt->get_result()->fetch_assoc(); } // Obtener todas las áreas para el select public function obtenerAreas() { $query = "SELECT area FROM areas ORDER BY area ASC"; return $this->db->query($query); } public function borrar($id) { $stmt = $this->db->prepare("DELETE FROM formacion WHERE id = ?"); $stmt->bind_param("i", $id); return $stmt->execute(); } }