diff --git a/modules/budget/views/suivi.php b/modules/budget/views/suivi.php index a1193cd..adec1a2 100644 --- a/modules/budget/views/suivi.php +++ b/modules/budget/views/suivi.php @@ -121,10 +121,14 @@ $importError = null; if (isset($_FILES['csv_file'])) { if ($_FILES['csv_file']['error'] == 0) { - // đŸ”„ LE FIX VITAL POUR LES CSV PROVENANT D'iOS/MAC - ini_set('auto_detect_line_endings', TRUE); - $file = $_FILES['csv_file']['tmp_name']; + + // đŸ”„ FIX INDESTRUCTIBLE PHP 8.3+ POUR LES FINS DE LIGNE iPHONE / MAC + // On normalise brutalement tous les types de sauts de ligne en \n + $fileContent = file_get_contents($file); + $fileContent = preg_replace("/\r\n|\r|\n/", "\n", $fileContent); + file_put_contents($file, $fileContent); + $handle = fopen($file, "r"); // 1. RĂ©cupĂ©ration dynamique du mapping configurĂ© dans les paramĂštres @@ -163,7 +167,7 @@ if (isset($_FILES['csv_file'])) { $amount = 0; $isCredit = 0; - // 2. Traitement dynamique du montant (Une seule colonne ou DĂ©bit/CrĂ©dit sĂ©parĂ©s) + // 2. Traitement dynamique du montant if ($amountType === 'single') { $val = $data[$colDebit] ?? ''; if (!empty(trim($val))) { @@ -220,7 +224,8 @@ if (isset($_FILES['csv_file'])) { fclose($handle); $showPreview = true; } else { - $importError = "Erreur lors de l'upload du fichier (Code d'erreur PHP : " . $_FILES['csv_file']['error'] . "). VĂ©rifiez le format ou la taille du fichier."; + $importError = "Échec d'upload iOS/Serveur (Code : " . $_FILES['csv_file']['error'] . "). Si le fichier vient d'iCloud, vĂ©rifiez qu'il est bien tĂ©lĂ©chargĂ© localement sur le tĂ©lĂ©phone."; + $showPreview = true; // } }