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 :

Parser un noeud XML avec PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Points : 1 128
    Points
    1 128
    Par défaut Parser un noeud XML avec PHP
    Une fois de plus Bonne et merveilleuse année à toutes et à tous.

    Dans une Base de données MySQL , j'ai un champ lieu qui contient l'information suivante :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <region xml:lang="fr" code="72">Aquitaine</region>
    <departement xml:lang="fr" code="64">Pyrénées-Atlantiques</departement>
    <commune xml:lang="fr" insee="64102" latitude="43.3" longitude="-0.366667">Bayonne</commune>
    J'ai crée une fonction PHP permettant d'afficher le résultat fetché du champ lieu :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function localisationvilleparbibliotheque($id_bibliotheque)
    {
    $sql="SELECT lieu FROM `frab_bibliotheques` WHERE `id_bibliotheque` =".$id_bibliotheque." LIMIT 0,1";
    $db=mysql_query($sql);
    $ligne = mysql_fetch_object ($db);
    return($ligne->lieu);
    }

    Ce qui me donne à l'affichage dans mon navigateur :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <ap:locinsee>
    <region xml:lang="fr" code="72">Aquitaine</region>
    <departement xml:lang="fr" code="64">Pyrénées-Atlantiques</departement>
    <commune xml:lang="fr" insee="64102" latitude="43.3" longitude="-0.366667">Bayonne</commune>
    </ap:locinsee>
    J'ai crée l'élément <ap:locinsee></ap:locinsee>, par contre j'aurai voulu que la valeur insee soit
    affichée ainsi :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ap:locinsee code_insee="64102"/>

    Je n'arrive pas à parser correctement le XML avec PHP afin d'obtenir l'affichage souhaité, que dois-je modifier dans ma fonction PHP pour y parvenir?

    Merci d'avance.
    Transact.

  2. #2
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Points : 1 128
    Points
    1 128
    Par défaut
    J'ai modifié ma fonction :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function localisationvilleparbibliotheque($id_bibliotheque)
    {
    $sql="SELECT lieu FROM `frab_bibliotheques` WHERE `id_bibliotheque` =".$id_bibliotheque." LIMIT 0,1";
    $result=mysql_query($sql);
    while($ligne = mysql_fetch_object($result))
    {
    $xml="<ap:locinsee ";
    $xml.="code_insee=\"$ligne->getAttribute($insee)\"";
    $xml.="/>";
    }
    return($xml);
    }

    J'obtiens ceci :

    Code:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ap:locinsee code_insee="()"/>
    La fonction getAttribute doit renvoyer la valeur de l'attribut insee présent dans le champ lieu

    Sophonie.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Sauf erreur de ma part, ta variable ligne contient un objet résultat d'un mysql_fetch_objet. Pour accéder à la valeur de lieu, tu dois donc faire $ligne->lieu et ensuite parser cette valeur en tant que code xml, par exemple avec simpleXml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ligne = mysql_fetch_object($result);
    $lieuXML = simplexml_load_string($ligne->lieu);
    $insee = (string) $lieuXML->commune->attributes()->insee;
    echo $insee;
    (code non testé, je ne garantis pas la syntaxe xml)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Drupal] Parser XML avec PHP pour générer du JS
    Par hitmax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 17
    Dernier message: 15/06/2011, 15h27
  2. [XML] parser un fichier xml avec php pour refaire un xml.
    Par steve3000 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/10/2008, 10h22
  3. [XML] [EXPAT] Parser un fichier xml avec php
    Par Dargos dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 05/04/2006, 12h25
  4. [XML] [EXPAT] Parser XML avec PHP
    Par glsn dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 20/12/2005, 12h29
  5. [XSLT] Utilisation de XML avec PHP dans le cadre d'un site
    Par nicolas66 dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 06/11/2005, 22h39

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