Bonjour à tous,

Avant intégration en base, je dois réaliser un traitement sur un fichier CSV dépourvu d'entête.

Après avoir rajouté une ligne d'entête via mon script, je dois modifier le format des dates (en 2eme colonne) pour obtenir les dates en JJMMYYYY.

Ci-dessous mon code qui fonctionne bien pour l'intégration de la ligne d'entête(new_heading) mais si j'essaie de faire un file_put_contents après la boucle while modifiant les format de dates, seul l'entête est ajoutée. ( et la toute dernière ligne du fichier CSV est "copiée" et remonte en ligne 2..). Comment faire pour que les dates modifiées soient intégrées dans le CSV ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
 
 
$dir = "/var/www/html/test2/parse";
//  si le dossier pointe existe
if (is_dir($dir)) {
 
   // si il contient quelque chose
   if ($dh = opendir($dir)) {
 
   	$new_heading = "typeEnreg,date,codeFourn,nomFourn,codeEntrep,nomEntrep,codeEdit,nomEdit,codeUER,libUER,PCB,codeULE,typeMouv,qteMouvUER,prix,indicPromo,com,indicSusp,libSusp,dateDeb,dateFin,codOp,libOp,queMouvULE";
    $new_heading.="\n";
 
 
      while (($file = readdir($dh)) !== false) {
 
			$arr = file($dir.'/'.$file);
			$arr[0] = $new_heading;
			$implode = implode("",$arr);
			file_put_contents($dir.'/'.$file,$implode);
 
      $fic = fopen($dir.'/'.$file, "a+");
         $i=1;
        while($tab=fgetcsv($fic,1024,',','"'))   // modification des format de dates
        {
 
          $arr[$i]=$tab;
          $date=$arr[$i][1];
          $year = substr($date,0,4);
          $mois = substr($date,4,2);
          $jour = substr($date, 6,2);
          $dateOK= $jour.$mois.$year;
 
 
          $arr[$i][1]=$dateOK;
          var_dump($arr[$i][1]);  // les date sont bien modifiée au bon format
          $arr[$i]= implode(",",$arr[$i]);
          $arr[$i].="\n";
          $i++; 
 
        }
          //$implode = implode("",$arr);
          //file_put_contents($dir.'/'.$file,$implode);  
          //fclose($fic);
 
       }
 
   }
   closedir($dh);
} 
 
?>