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 :

Iterator, extraction de données et enregistrement


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut Iterator, extraction de données et enregistrement
    Bonjour,

    J'utilise le bout de script suivnat pour extraire certaines données d'un fichier:
    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
    // TRAITEMENT DES FICHIERS
    	$files = new AppendIterator();
    	$files->append(new GlobIterator(__DIR__.'/FOLDER/FICHIER.TXT'));
    	foreach ($files as $file) {
        $lines = $file->openFile();
        $lines->setFlags(SplFileObject::READ_CSV);
        $lines->setCsvControl(';');
    // QUELQUES TRAITEMENTS
    	foreach ($lines as $line) {
    	// je remplace les apostrophes  par \'
    	$line = str_replace ("'","\'", $line);
    	$line = str_replace ("Acc . Nr.","\n", $line);
     
    // AFFICHE TOUTES LES DONNEES
        // print_r($line); echo '<br>'; //<-- AFFICHER LES DATAS
     
    // AFFICHAGE DES DONNEES
    	$VARIABLE_01 = $line[0]; echo $VARIABLE_01;
    	$VARIABLE_02 = $line[1]; echo $VARIABLE_02;
     
    echo '<br>';
    Comment enregistrer les données extraites dans un fichier .TXT, autre que le fichier natif.

    merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Il te faut lire de façon séquentielle ton fichier d'origine ainsi
    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
     
    <?php
    $Lui = "tonfichier.txt";
    $luiactu=file($Lui);
    $NbrLigne=count($luiactu)-1;
    $LaLigne=0;
    $flag_arret=0;
    $rep="";
    $fini=99;
    /* On lit ligne par ligne */
    for($a=0;$a<=$NbrLigne;$a++)
     {
    $luiactu[$a]=str_replace("ÿ",".",$luiactu[$a]);
     }
    //============ensuite tout simplement tu ouvre en écriture 
    //============autre.txt et réécris !
    ?>

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut
    Merci pour ta réponse, mais de cette façon je n'ai plus le contrôle des offset ?

    le bout de script que j'ai donné affiche ca dans un navigateur:
    Array ( [0] => 9999999 [1] => 9999999 [2] => RRRRRRRRRR [3] => TITRE [4] => DESIGNATION - DESIGNATION [5] => 0000,00 [6] => 0.00 [7] => 000.0 [8] => RRR [9] => 30/05/2012 [10] => 1,000000 [11] => 0000,00 )

    Ce qui me permet de choisir les valeurs d'offset que je veux garder ou non. Une fois ma sélection faite je voudrais sauvegarder.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je comprends mais il te faut bien prendre ton texte épuré, modifier comme tu souhaites et l'écrire dans un autre fichier texte non ?
    Ou je n'ais pas compris ta question ...

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut
    Oui, tu as parfaitement compris mon problème. Ce que je ne sais pas faire avec ton morceau de script, est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	if ($line[0] == 'blablabla') continue;
    	if ($line[1] == 'pas bien') continue;
    	if ($line[2] == 'nom') continue;
    	if ($line[3] == 'prenom') continue;
    ces manip fonctionnent parfaitement avec mon bout de script...

    cette variable "$luiactu[$a]" définit la ligne complète.

  6. #6
    Invité
    Invité(e)
    Par défaut
    OK, je te réécrit d'une autre façon en ne faisant pas tes modifications ou contrôle et te laissant transposer
    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
     
    <html>
    <body>
    <p align="center">
    <?PHP 
    $LigneOk = array();
    $i = 0;
          $FichierActu=file("toto.txt");
          $NbrLigne=count($FichierActu)-1;
          for($a=0;$a<=$NbrLigne;$a++)
           {
              //====jelis donc toto.txt========  
              echo (" ".$a." ".$FichierActu[$a]."<br />") ;
              //=========chaque ligne corrigée et OK je la gardes dans LigneOK
              if ($ok="ok" ) 
                {
                  $LigneOk[$i]=   $FichierActu[$a];
                  $i++;    
                }
              }
    //============= je reecrit dans resultat.txt==========
    // ========= don j'ais $i lignes retenues===========
     $LeFichier=fopen("resltat.txt","w+");
     for($a=0;$a<$i;$a++)
      {
       $LeTexte=$LigneOk[$a];
       fputs($LeFichier,$LeTexte."");    
      }
     fclose($LeFichier);
    ?>
      <br /></p>
    </body>
    </html>
    A toi de jouer

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut


    Cool grand merci le fichier est lu, ecrit dans un autre, parfait. Par contre il y aune chose que je comprends pas avec mon script,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($line[2] == 'nom') continue;
    défini l'offset a traiter si mon fichier natif a pour données AAAAA;BBBBB;CCCC;DDDDD;EEEEE l'offest [2] donc CCCC dans ce cas ne sera pas lu et dans le navigateur sera affiché:
    AAAAA;BBBBB;DDDDD;EEEEE

    Avec ton script, la ligne est lue avec $FichierActu[$a] mais comment je défini [a] pour sélectionner la position de la donnée a traiter dans la ligne et pouvoir traiter ou le champ AAAAA ou le champs BBBBB etc... ?

    Désolé de faire mon boulet.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Attends, tu me demandes de t'expliquer ton script
    Mais je n'en comprends même pas la syntaxe ...

    Ne mélanges pas tou, tu as demandé comment réécrire un fichier lu après correction ! pour le reste analyser un bout de code comme cela est impossible ...
    Donnes tout ton code.

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 111
    Points : 42
    Points
    42
    Par défaut
    J'ai du mal m'expliquer sur le dernier post...
    ton script répond parfaitement a ma demande la seule chose qui lui manque pour être parfait, c'est de pouvoir faire le nettoyage dans certains champs de chaque ligne ?
    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
    <body>
    <?PHP 
    $LigneOk = array();
    $i = 0;
          $FichierActu=file("FOLDER/FICHIER.TXT");
          $NbrLigne=count($FichierActu)-1;
          for($a=0;$a<=$NbrLigne;$a++)
           {
              echo (" ".$a." ".$FichierActu[$a]."<br />") ;
    		  
    		  // if $FichierActu[$a]
    		  
              //=========chaque ligne corrigée et OK je la gardes dans LigneOK
              if ($ok="ok" ) 
                {
    			if ($FichierActu[0] = '262365') continue; //else echo {'PLOUF'};
                  $LigneOk[$i]=   $FichierActu[$a];
                  $i++;    
                }
              }
    //============= je reecrit dans resultat.txt==========
    la ligne en rouge, correspond au traitement que je veux faire. dans ce cas précis toutes les lignes commencant par 262365 ne sont pa lues.

Discussions similaires

  1. [VBA Excel] Extraction de données
    Par tpv72 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2005, 21h49
  2. Extraction de données depuis fichier .NDX ...
    Par Olif_C dans le forum WinDev
    Réponses: 4
    Dernier message: 30/08/2005, 11h57
  3. [debutant] extraction de données
    Par tibpower dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 02/08/2004, 14h33
  4. Extraction de données sur des fichiers excel
    Par iupgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 13h53

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