1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 6
    Points
    6

    Par défaut modification de données dans fichier CSV

    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);
    } 
     
    ?>

  2. #2
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    4 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 4 385
    Points : 10 869
    Points
    10 869

    Par défaut

    Salut,

    faut faire le plus simple possible :
    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
    $dir = "/var/www/html/test2/parse";
    if (is_dir($dir)) { 
        if ($dh = opendir($dir)) { 
            while (($file = readdir($dh)) !== false) {
                $data = [
                    "typeEnreg,date,codeFourn,nomFourn,codeEntrep,nomEntrep,codeEdit,nomEdit,codeUER,libUER,PCB,codeULE,typeMouv,qteMouvUER,prix,indicPromo,com,indicSusp,libSusp,dateDeb,dateFin,codOp,libOp,queMouvULE";
                ];
                $path = "{$dir}/{$file}";
                if (($fh = fopen($path, 'r')) !== false) {
                    while (($row = fgetcsv($fh; 1024, ',', '"')) !== false) {
                        $row[1] = DateTime::createFromFormat('Ymd', $row[1])->format('d/m/Y');
                        $data[] = implode(',', $row);
                    }
                    fclose($path);
                    file_put_contents($path, implode("\n", $data));
                }
           }
       }
       closedir($dh);
    }
    # Dans la Création, tout est permis mais tout n'est pas utile...

Discussions similaires

  1. Récupération données dans fichier csv
    Par fnallet94 dans le forum C++
    Réponses: 13
    Dernier message: 11/04/2017, 15h21
  2. [XL-2013] Modifier donnée dans fichier csv par macro mais laisser fichier en csv
    Par Carambar dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/11/2016, 18h20
  3. [CSV] Tri de données dans fichier CSV
    Par PhilippeIEP dans le forum Fichiers
    Réponses: 6
    Dernier message: 08/10/2008, 11h48
  4. Script extraction données dans fichier CSV
    Par nollier dans le forum VBScript
    Réponses: 18
    Dernier message: 20/06/2008, 10h32
  5. Sauvegarde de données dans fichier csv
    Par issou dans le forum C
    Réponses: 1
    Dernier message: 22/12/2005, 09h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo