beginTransaction(); $stmt = $pdo->prepare($sql); $stmt->execute($params); // Handle new image uploads if (isset($_FILES['images'])) { $upload_dir = __DIR__ . '/assets/uploads/'; if (!is_dir($upload_dir)) { mkdir($upload_dir, 0775, true); } $allowed_ext = ['jpg', 'jpeg', 'png', 'gif']; foreach ($_FILES['images']['tmp_name'] as $key => $tmp_name) { if ($_FILES['images']['error'][$key] === UPLOAD_ERR_OK) { $file_name = $_FILES['images']['name'][$key]; $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION)); if (in_array($file_ext, $allowed_ext)) { $new_file_name = time() . '_' . uniqid() . '_' . basename($file_name); $dest_path = $upload_dir . $new_file_name; if (move_uploaded_file($tmp_name, $dest_path)) { $image_path = 'assets/uploads/' . $new_file_name; $img_stmt = $pdo->prepare("INSERT INTO installation_images (installation_id, image_path) VALUES (?, ?)"); $img_stmt->execute([$id, $image_path]); } else { throw new Exception('Falha ao mover o arquivo enviado: ' . $file_name); } } else { throw new Exception('Tipo de arquivo inválido: ' . $file_name); } } } } $pdo->commit(); $_SESSION['message'] = "Instalação #{$id} atualizada com sucesso!"; $_SESSION['message_type'] = "success"; } catch (Exception $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } $_SESSION['message'] = "Erro ao atualizar a instalação: " . $e->getMessage(); $_SESSION['message_type'] = "danger"; header("Location: edit_installation.php?id={$id}"); exit; } header("Location: index.php"); exit;