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

PHP & Base de données Discussion :

php et fichier csv fusionner/grouper des lignes


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Par défaut php et fichier csv fusionner/grouper des lignes
    Bonjour à tous,

    Désolé par avance si je n'ai pas posté au bon endroit
    Je dois manipuler un fichier csv pour le transformer en fichier XML.

    Fichier d'entrée :
    nom;prenom;email
    dupont;marc;dupont@dupont.fr
    dupont;marc;dupont@gmail.com
    martin;rene;rene@gmail.com

    mon fichier php
    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
     
    <?php
      $fichier = 'test3.csv';
      $sortie = 'test3.xml';
     
      $contenu = fopen($fichier, 'r');
      $ecriture = fopen($sortie, 'w');
     
      $entete = fgetcsv($contenu, 1024, ";", '"');
     
      $debut = '<fichier>' . "\n";
      fwrite($ecriture, $debut);
     
     
     
      while (($tab = fgetcsv($contenu, 1024, ";", '"')) !== FALSE)
      {
     
        fwrite($ecriture, "\t" . '<personne>' . "\n");
        foreach ($tab as $cle => $valeur)
        {
          fwrite($ecriture, "\t\t" . '<' . $entete[$cle] . '>' . $valeur . '</' . $entete[$cle] . '>' . "\n");
     
        }
        fwrite($ecriture, "\t" . '</personne>' . "\n");
     
      }
     
     
     $fin = '</fichier>' . "\n";
      fwrite($ecriture, $fin);
     
      fclose($contenu);
      fclose($ecriture);
    ?>
    Voilà l'affichage obtenu :
    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
     
    <fichier>
    	<personne>
    		<nom>dupont</nom>
    		<prenom>marc</prenom>
    		<email>dupont@dupont.fr</email>
    	</personne>
    	<personne>
    		<nom>dupont</nom>
    		<prenom>marc</prenom>
    		<email>dupont@gmail.com</email>
    	</personne>
    	<personne>
    		<nom>martin</nom>
    		<prenom>rene</prenom>
    		<email>rene@gmail.com</email>
    	</personne>
    </fichier>
    Parfait me direz-vous !! Sauf que j'aimerais obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <fichier>
    	<personne>
    		<nom>dupont</nom>
    		<prenom>marc</prenom>
    		<email>dupont@dupont.fr</email>
    		<email>dupont@gmail.com</email>
    	</personne>
    	<personne>
    		<nom>martin</nom>
    		<prenom>rene</prenom>
    		<email>rene@gmail.com</email>
    	</personne>
    </fichier>
    Donc pour résumer, je souhaiterais fusionner/grouper les lignes avec un nom et un prénom identique

    J'ai fais des tests avec array_unique, mais rien donc je me tourne vers vous.

    Merci par avance

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Utilise DOM Document pour générer ton flux XML. Tu crées les nodes <personne> et tu gardes les références dans une tables avec pour clé le couple nom-prénon. Lors d'une itération, tu détectes si le couple nom-prénom est déjà présent et si tel est le cas, plutôt que de générer un nouveau node <personne>, tu utilise celui qui existe déjà.

Discussions similaires

  1. comment parser un fichier csv qui contient des ligne en json
    Par khadi8 dans le forum Général Python
    Réponses: 4
    Dernier message: 07/02/2014, 21h07
  2. [PowerShell] Lire à fichier CSV et effacer des lignes
    Par danje dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 07/02/2013, 11h44
  3. comment grouper des lignes continues
    Par pdelorme dans le forum SQL
    Réponses: 6
    Dernier message: 28/11/2007, 16h02
  4. Réponses: 5
    Dernier message: 25/09/2007, 17h06
  5. Grouper des lignes
    Par Bayard dans le forum Excel
    Réponses: 1
    Dernier message: 17/03/2007, 09h01

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