prepare('DELETE FROM import_errors WHERE batch_id = ?'); $stmt->execute([$batchId]); $feedback = sprintf('%d ligne(s) d\'erreur purgee(s) pour l\'import #%d.', $stmt->rowCount(), $batchId); } catch (Throwable $e) { error_log('[import_history] purge_errors: ' . $e->getMessage()); $feedback = 'Une erreur est survenue lors de la purge.'; $feedbackType = 'error'; } } } } $page = max(1, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT) ?: 1); $perPage = 25; $offset = ($page - 1) * $perPage; $totalBatches = 0; $batches = []; try { $totalBatches = (int)$db->query('SELECT COUNT(*) FROM import_batches')->fetchColumn(); $stmt = $db->prepare( 'SELECT id, filename, imported_at, imported_by, status, rows_total, rows_imported, rows_rejected FROM import_batches ORDER BY imported_at DESC LIMIT :limit OFFSET :offset' ); $stmt->bindValue(':limit', $perPage, PDO::PARAM_INT); $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); $batches = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (Throwable $e) { error_log('[import_history] liste batches: ' . $e->getMessage()); $feedback = 'Impossible de charger l\'historique des imports. Consultez les journaux du serveur.'; $feedbackType = 'error'; } $errorsByBatch = []; $detailBatchId = filter_input(INPUT_GET, 'detail', FILTER_VALIDATE_INT); if ($detailBatchId) { try { $stmt = $db->prepare( 'SELECT line_number, message, raw_line FROM import_errors WHERE batch_id = ? ORDER BY line_number ASC LIMIT 500' ); $stmt->execute([$detailBatchId]); $errorsByBatch = $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (Throwable $e) { error_log('[import_history] detail erreurs: ' . $e->getMessage()); } } $totalPages = max(1, (int)ceil($totalBatches / $perPage)); $user = current_admin_username(); function status_badge(string $status): string { $map = [ 'success' => 'badge-success', 'partial' => 'badge-warning', 'failed' => 'badge-error', ]; $class = $map[$status] ?? 'badge'; return '' . htmlspecialchars($status, ENT_QUOTES, 'UTF-8') . ''; } ?> Historique des imports — NetMonster Admin

Historique des imports .ntm

Suivi en lecture seule des imports realises. La purge des erreurs d'un import est possible mais n'affecte jamais les donnees deja validees.

Imports ()

# Fichier Date Utilisateur Statut Lignes totales Importees Rejetees Actions
Voir erreurs 0): ?>
Aucun import pour le moment.
1): ?>

Erreurs de l'import #

Aucune erreur enregistree pour cet import.

Ligne Message Contenu brut