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 :

Combiner le contenu de deux fichiers textes par "clé"


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut Combiner le contenu de deux fichiers textes par "clé"
    Bonsoir tout le monde,

    J'ai deux fichier textes comprenant dans le premier le Nom;Commentaire et dans le deuxième le Nom;Prenom (les noms sont identiques). J'aimerais combiner ces deux fichiers pour avoir dans un troisième fichier Nom;Prenom;Commentaire.

    Comment pourrais-je faire cela ?

    Merci à vous.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Salut,

    Si tu as deux fichiers textes, tu peux remplir deux tableaux avec ces deux fichiers. Puis ensuite tu parcours ton premier tableau et tu cherche son équivalence dans le second. Si tu trouve tu incrémentes ton tableau numéro 3 avec tes données. (Une fonction PHP fait déjà l'incrémentation automatique des données, il faut juste que tu lui donne des tableaux en paramètres : array_merge_recursive())

    J'ai préféré de proposer une version littéraire de la solution, si tu veux plus t'aide avec les différentes fonctions PHP tu peux me poser des questions

    Bonne chance

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Je me suis lancé dans ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $lines = file('names.txt');
    $lines2 = file('commentaire.txt');
     
    foreach ($lines as $key => $val) {
        $comment = explode(";",$lines2[$key]);
        $lines[$key] = $val.";".$comment[0];
    }
     
    file_put_contents('c.txt', implode("\n", $lines));
     
    ?>
    Mais mon problème la c'est que si y'a 3 lignes avec le Name: R dans un fichier et uniquement une dans l'autre, je ne récupère pas la 3ème donnée sauf sur la première ligne.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $lines = file('names.txt');
    $lines2 = file('commentaire.txt');
     
    $test = array_merge_recursive($lines,$lines2); 
     
    ?>
    Cela te donne quoi de faire ce petit bout de code ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Je voulais voir si je pouvais le faire sans utiliser de tableau.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Ah ok, tu l'avais point dis

    Tu peux m'afficher ce que tu as dans tes deux tableaux s'il te plait. Merci. (Avant ton foreach etc)

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Dans mes deux tableaux j'ai cela :

    tab 1: Array ( [0] => internal hackaton results;744 [1] => charles marais is in the loop... identity topics etc.;744 [2] => proto meeting with Didier Chatloin;744 [3] => meeting à plumes 11-DEC;744 )

    tab 2: Array ( [0] => smart life 4 partners - Cam+Pres - Q2-17;744 )

    Et j'aimerais avoir "smart life 4 partners - Cam+Pres" dans chacune des lignes de mon tab 1.

    Ps : Les champs que j'ai mis dans mon premier message ne sont pas cohérents (c'était en exemple )

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Ok, et le 744 c'est l'identificateur unique non ? le lien qui est entre tes valeurs du tab1 et du tab2 ?

    Auras-tu plusieurs valeurs dans le tab2 ?

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Oui le lien c'est le 744.

    Le 744 c'est un exemple. Après je compte l'appliqué sur 745 etc...

    Dans cet exemple là j'ai une valeur c'est tout.

    Donc en gros ce que j'aimerais c'est par exemple pour les deux premières entrées :

    internal hackaton results;744;smart life 4 partners - Cam+Pres
    charles marais is in the loop... identity topics etc.;744;smart life 4 partners - Cam+Pres

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Si je comprend bien tu veux, que depuis un fichier numéro 1 qui est sous ce format

    phrase1;744
    phrase2;744

    et un fichier numéro 2 sous le formet
    toto;744

    A la fin tu veux obtenir
    toto;phrase1;744
    toto;phrase2;744

    C'est ça ?

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Exact

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    J'éspère que ça répond à ta question. Je l'ai fais à l'arrache mais il a le mérite de fonctionner. A toi de voir si tu veux l'améliorer

    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
     
    <?php
            $tab1 = file('fichier1');
            $tab2 = file('fichier2');
     
            //Je liste toutes les valeurs du tab2
            $taille = count($tab2);
            for($i=0;$i<$taille;$i++){
                    //ici du coup je reçois par exemple : toto;744
                    $vars = explode(';',$tab2[$i]);
                    //$vars[1] contient uniquement ton id
                    //Maintenant on cherche dans l'autre tableau les ID qui sont semblable
                    $taille2 = count($tab1);
                    for($j=0;$j<$taille2;$j++){
                            $vars2=explode(';',$tab1[$j]);
                            if(isset($vars2[1])){
                                    if($vars2[1]==$vars[1]){
                                            file_put_contents('c.txt',$vars[0].';'.$tab1[$j],FILE_APPEND);
                                    }
                            }
                    }
            }

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Merci,je l'ai testé et il ne donne pas ce que je veux.. Le résultat renvoyé est uniquement celui de la dernière ligne du tab1

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Alors pour mes tests j'ai utilisé :
    fichier 1:
    phrase1;744
    phrase2;744
    phrase3;700
    phrase4;744
    fichier2:
    toto;744
    titi;700

    Et le résultat :
    toto;phrase1;744
    toto;phrase2;744
    toto;phrase4;744
    titi;phrase3;700

    Je pense que comme j'ai dis il faut respecter la case sensitive, essayes avec mes fichiers déjà

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Je n'ai pas le titi;phrase3;700

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Comment ce fais-ce

    Tu mets bien juste le script dans un fichier test.php et tu te mets genre en ligne de commande et tu fais php test.php

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    Oui. Si je modifie dans le tab 2 l'ordre entre le 700 et le 744 la j'ai le même résultat que toi.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Bizarre, j'arrive pas à reproduire la même erreur que toi

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    Coucou,

    Et du coup il marche pas ? C'est quoi le problème ?

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 36
    Points
    36
    Par défaut
    En fait la je viens de le tester avec ces fichiers là comme là qui sont que des morceaux de mon fichiers mais quand je prends le fichier tout entier cela ne fonctionne pas et je ne comprends pas pourquoi mais le format est le même :/

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/03/2016, 19h48
  2. Réponses: 11
    Dernier message: 17/02/2011, 01h01
  3. Réponses: 0
    Dernier message: 14/11/2010, 15h22
  4. Réponses: 2
    Dernier message: 11/05/2006, 22h21

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