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 :

Création d'un fichier xml à partir d'une table


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 45
    Points
    45
    Par défaut Création d'un fichier xml à partir d'une table
    Bonjour,

    J'ai une table qui contient les enregistrements suivants :
    Num Type Nom Codesite CP
    1 A TOTO 200 89000
    1 A TOTO 200 89200
    1 A TATA 100 89310
    1 B TUTU 300 51000
    1 B TUTU 200 51300
    Je voudrais faire de cette table un fichier xml qui contiendrait tous les éléments et qui regrouperait certaines données : exemple :

    Code xml : 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
     
          <Num1="1"   Type="A">
                - <Nom Nom="TOTO" >
                         <Code CodeSite="200" />
                               - <CP = "89000"></CP>
                               - <CP = "89200"></CP>
                         </ Code>
                  </ Nom>
                - <Nom Nom="TATA">
                          <Code CodeSite="100" />
                                - <CP = "89310"></CP>
                          </ Code>
                 </ Nom>
          <Num1="1"   Type="B">
                - <Nom Nom="TUTU" >
                           <Code CodeSite="200" />
                                  - <CP = "51000"></CP>
                            </ Code>
                            <Code CodeSite="300" />
                                  - <CP = "51310"></CP>
                            </ Code>
                </ Nom>
          </Num>

    Je pense qu'il faut utiliser des boucles imbriquées, mais mon problème réside
    dans l'exploitation des données. En effet, on doit regrouper certaines données (dans l'exemple, pour un num=1, TYPE=A, NOM=TOTO et codesite 200, j'ai 2 CPs que je regroupe).
    Pouvez-vous m'éclairer sur la méthode à adopter car je suis un peu perdu ...
    Merci d'avance

  2. #2
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    En PHP : http://pear.php.net/package/XML_FastCreate

    Mais je préconise l'usage de mysqldump par ssh ou avec shell_exec().
    YourLabs Business Service: Conseil en Strategie Numerique / Club de 1337 Haxors depuis 2012 / Marque de Logiciels Libres / Blog / GitHub /
    Citation Envoyé par C.A.R. Hoare, The 1980 ACM Turing Award Lecture
    There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.”
    More great quotes - RIP Uriel

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 25
    Points : 24
    Points
    24
    Par défaut une idèe
    Tu peux essayer ça
    Apparemment ça doit fonctionner
    Moi je l’ais pas tester mais tu peux t inspirer de l’idée
    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
     
    $contenu="<root>"
    $sql="select distinct Num,Type from table";
    $result=mysql_query($sql);
    while($row=mysql_fetch_array($result))
    {
       $contenu.="<num1='$row[0]' type='$row[1]'>";
       $sql="select distinct Nom from table where Num=$row[0] and Type=$row[1]";
       $result1=mysql_query($sql);
       while($row1=mysql_fetch_array($result1))
       {
         $contenu.="<nom nom='$row1[0]'>";
         $sql="select distinct Codesite from table where Num=$row[0] and Type=$row[1] and Nom=$row1[0]";
         $result2=mysql_query($sql);
         while($row2=mysql_fetch_array($result2))
         {
          $contenu.="<Code CodeSite='$row2[0]'>";
          $sql="select  CP from table where Num=$row[0] and Type=$row[1] and Nom=$row1[0] and Codesite=$row2[0]";
          $result3=mysql_query($sql);
          while($row3=mysql_fetch_array($result3))
          {
           $contenu.="<CP = '$row3[0]'></CP>";
          }
          $contenu.="</code>";
         }
         $contenu.="</nom>"; 
       }
       $contenu.="</num1>";
    }
    $contenu.="</root>";
    $handle=fopen("test.xml","w");
    fwrite($handle,$contenu);
    fclose($handle);

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    Merci pour les lignes de code, j'ai donc essayé
    de faire ces while imbriqués, mais j'ai un message d'erreur qui apparait.

    Il semblerait que cela vienne de la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="select distinct Nom from table where Num=$row[0] and Type=$row[1]";
    voici le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Unknown column 'A' in 'where clause'
    Merci d'avance pour ta précieuse aide

    @+

  5. #5
    Inscrit

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Points : 909
    Points
    909
    Par défaut
    C'est très simple, il fallait utiliser :
    $sql="select distinct Nom from table where Num='$row[0]' and Type='$row[1]'"
    Et encore, le code présenté par foussil est inutilisable, mieux vaut lire la documentation que j'ai proposé et écrire un bout de code vous même, même avec un minimum de connaissance.
    YourLabs Business Service: Conseil en Strategie Numerique / Club de 1337 Haxors depuis 2012 / Marque de Logiciels Libres / Blog / GitHub /
    Citation Envoyé par C.A.R. Hoare, The 1980 ACM Turing Award Lecture
    There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.”
    More great quotes - RIP Uriel

Discussions similaires

  1. Création d'un fichier XML à partir d'une base de données.
    Par RouRa22 dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 27/09/2011, 09h16
  2. Créer un fichier XML à partir d'une table
    Par Imageek dans le forum SQL
    Réponses: 2
    Dernier message: 06/03/2010, 15h51
  3. Réponses: 3
    Dernier message: 23/09/2009, 21h19
  4. Récupérer des fichiers XML à partir d'une Table
    Par faraway dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/09/2009, 11h32
  5. cration d'un fichier xml à partir d'une BDD
    Par noutazia20 dans le forum C#
    Réponses: 1
    Dernier message: 14/05/2008, 00h57

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