trim((string) ($row[1] ?? '')), 'yahoo_code' => trim((string) ($row[2] ?? '')), 'company_name' => trim((string) ($row[3] ?? '')), ]; } fclose($handle); } } $actions = $actionsManager->listActions(); $differences = []; foreach ($actions as $action) { $isin = trim((string) ($action['isin'] ?? '')); if ($isin === '') { continue; } $expected = [ 'ticker' => trim((string) ($action['ticker'] ?? '')), 'yahoo_code' => trim((string) ($action['yahoo_code'] ?? '')), 'company_name' => trim((string) ($action['company_name'] ?? '')), ]; if (!isset($csvRecords[$isin])) { $differences[] = ['isin' => $isin, 'reason' => 'absent']; continue; } $csvRow = $csvRecords[$isin]; foreach ($expected as $field => $value) { if ($csvRow[$field] !== $value) { $differences[] = ['isin' => $isin, 'reason' => $field]; break; } } } $csvReady = $csvExists && empty($differences); if ($csvReadError !== null) { $statusMessage = 'Impossible de vérifier le fichier actions.csv : ' . $csvReadError; } elseif ($csvReady) { $statusMessage = 'Le fichier actions.csv est à jour.'; } else { $statusMessage = 'Le fichier actions.csv peut être mis à jour.'; if ($csvExists) { $statusMessage .= ' ' . count($differences) . ' différence(s) détectée(s).'; } } require_once __DIR__ . '/header.php'; ?> Synchronisation CSV = htmlspecialchars($statusMessage, ENT_QUOTES, 'UTF-8') ?> Retour au menu Mettre à jour Retour au menu Télécharger CSV
= htmlspecialchars($statusMessage, ENT_QUOTES, 'UTF-8') ?>