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 :

PHP et XML: extraire et comparer


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut PHP et XML: extraire et comparer
    Bonjour!

    Je suis un débutant en PHP, et comme à mon habitude, je souhaite arriver à un résultat précis sans connaître les bases. Je vous soumet mon problème:

    Soit un xml "miseenforme.xml" comme suit
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <media>
    	<category type="vid">
    		<nom>nom 1</nom>
    		<image>ocean.jpg</image>
    		<datesortie>01/11/2010</datesortie>
    		<tag>Documentaire</tag>
    		<comm>superbe! Sacré spectacle.</comm>
    	</category>
    	<category type="zic">
    		<artiste>nom 2</artiste>
    		<album>Welcome à Zanzibar</album>
    		<image>ocean.jpg</image>
    		<datesortie>01/11/2010</datesortie>
    		<comm>Album de jazz. Blabla...</comm>
    	</category>
    </media>
    Je souhaite dans un premier temps lister tous les éléments "vid". Je procède comme suit

    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
     
    <?
    $xml = simplexml_load_file('miseenforme.xml');
     
    foreach ($xml->category as $flim);
    {
    	if ($flim['type'] == "vid")
    	{
    		echo 'Nom : '.utf8_decode($flim->nom).'<br />';
    		echo '<b>'.utf8_decode($flim->comm).'</b><br />';
    	}
    	else 
    	{
    		echo 'je suis dans zic <br />';
    	}
    }
    ?>
     
    </body>
    </html>
    Le fait est que ce script ne fait que m'afficher "je suis dans zic". On dirait que je n'ai rien compris à la boucle "foreach"? Le script devrais en 1er s'arrêter sur le "node" category qui est une "vid" (donc afficher le nom du film et le commentaire), en 2nd s'arrêter sur le "node" category qui est une "zic" (et afficher "je suis une zic"), enfin se finir puisqu'il n'y a plus de node category. Non?

  2. #2
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Si. C'est bien ce qu'il fait, d'ailleurs. Mais tu fais comme si 'type' etait un attribut de ton objet $flim, ce qui n'est pas le cas : simple_xml_loadFile renvoie un objet de type SimpleXMLElement. Le reste est dans la doc en lien

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 224
    Points
    8 224
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach ($xml->category as $flim);
    {
    Il y a un ; de trop.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    "Il y a un ; de trop." !
    Vi! Tout de suite ça fonctionne vachement mieux!
    Merci Séb

    "tu fais comme si 'type' etait un attribut de ton objet $flim, ce qui n'est pas le cas"
    Heu, d'après mes tests, pour le xml suivant...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <media>
    	<category type="vid">
    		<nom>nom 1</nom>
    	</category>
    </media>
    j'accède à la valeur de 'type' via category['type']
    et à la valeur de 'nom' via category->nom
    ???
    Merci pour ton lien Herode, je vais me lire ça!

  5. #5
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Ha ? Je ne connaissais pas cette écriture pour le SimpleXMLElement. Autant pour moi alors, et merci pour le tuyau !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Re salut Herode. Chez moi ça fonctionne. Après j'ai fait des tests "empririques", je sais po si c'est propre comme code.
    Je cloture le sujet

    Merci encore!

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Points : 67
    Points
    67
    Par défaut
    Bonsoir,

    Pourrais tu montrer ton résultat final s'il te plais merci.

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

Discussions similaires

  1. [Php 4 + xml]Insertion d'un element
    Par multani2842 dans le forum Langage
    Réponses: 4
    Dernier message: 05/07/2006, 22h21
  2. [XML] [EXPAT] Parseur PHP flux xml
    Par Sam53 dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 30/03/2006, 20h49
  3. [XML] PHP et XML : remplacer les < et >
    Par firejocker dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 11/03/2006, 12h53
  4. [Wamp] Cherche plateforme pour développer en php, mysql, xml, xsl
    Par ibtisss dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 18/10/2005, 17h31
  5. PHP dans XML ou XSL
    Par mathieu dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 31/08/2003, 21h07

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