IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

modification de données dans fichier CSV


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2017
    Messages
    15
    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 : 15
    Points : 10
    Points
    10
    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
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    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);
    }

Discussions similaires

  1. Récupération données dans fichier csv
    Par Invité dans le forum C++
    Réponses: 13
    Dernier message: 11/04/2017, 14h21
  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, 17h20
  3. [CSV] Tri de données dans fichier CSV
    Par PhilippeIEP dans le forum Langage
    Réponses: 6
    Dernier message: 08/10/2008, 10h48
  4. Script extraction données dans fichier CSV
    Par nollier dans le forum VBScript
    Réponses: 18
    Dernier message: 20/06/2008, 09h32
  5. Sauvegarde de données dans fichier csv
    Par issou dans le forum C
    Réponses: 1
    Dernier message: 22/12/2005, 08h36

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