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 :

Lecture de données à partir d'une boucle foreach


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut Lecture de données à partir d'une boucle foreach
    Bonjour,

    J'ai créé une fonction qui me permet de construire un menu à partir d'un fichier xml dont la structure est ainsi :

    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
     
    <?xml version="1.0" encoding="ISO-8859-15"?>
    <donnees>
      <dossier>
        <nom_dossier>Actualités</nom_dossier>
        <flux>
          <nom_flux>LeMonde.fr : A la Une</nom_flux>
          <url>http://www.lemonde.fr/rss/une.xml</url>
        </flux>
      </dossier>
      <dossier>
      <nom_dossier>Sport</nom_dossier>
      <flux>
      <nom_flux>Lepoint.fr : Sport</nom_flux>
      <url>http://www.lepoint.fr/content/system/rss/sports/sports_doc.xml</url>
      </flux>
      </dossier>
    </donnees>

    et voilà 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    function CreateMenu($file) {
     
    $dom = new DOMDocument(); 
    $dom->load($file);
     
    $afficher_menu = '<ul class="menu">';
     
    $menuList = $dom->getElementsByTagName('dossier');
    foreach ($menuList as $dossier) {
     
        $nom_dossier = $dossier->getElementsByTagName('nom_dossier');
    	$nom_dossier = $nom_dossier->item(0)->nodeValue;
     
    	$afficher_menu = $afficher_menu."<li class=\"cat\">
    		<a href=\"#\" onclick=\"expand(this)\">$nom_dossier</a>
    		<ul>";
     
    $fluxlist = $dom->getElementsByTagName('flux');
    foreach ($fluxlist as $flux) {
     
        $nom_flux = $flux->getElementsByTagName('nom_flux');
        $nom_flux = $nom_flux->item(0)->nodeValue;
     
     
        $url = $flux->getElementsByTagName('url');
        $url = $url->item(0)->nodeValue;
     
    	$afficher_menu = $afficher_menu."<li class=\"souscat\"><a href=\"#\" onclick=\"recup('$url');\">$nom_flux</a></li>";
    }
    	$afficher_menu = $afficher_menu.'</ul></li>';
    }
    	$afficher_menu = $afficher_menu.'</ul>';
     
    	echo $afficher_menu;
    }

    Le problème est le suivant : Il me trouve bien les differents dossiers, mais à chaque fois, il relit toutes les <flux> et donc intègre tous les flux dans tout les dossiers.

    Ma question est donc la suivante : Comment faire une boucle qui puisse lire seulement les flux du dossier concerné ?

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 323
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 323
    Billets dans le blog
    17
    Par défaut
    A priori l'erreur se trouve là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fluxlist = $dom->getElementsByTagName('flux');
    => Tu demandes tous les <flux> de $dom, la racine, alors qu'il faudrait demander les <flux> du dossier courrant.

    PS : SimpleXML est plus sympa à l'usage pour la lecture d'un XML

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    Yeah, tu as vu juste, effectivement, en remplacant $dom par $dossier celà me remet les choses en ordre, je n'avais pas interpreté $dom comme etant la racine, mais effectivement, maintenant que tu me le dis...

    Pour simpleXML, je pense que c'est juste une question de gout, je trouve DOM assez sympa et relativement clair =)

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/02/2013, 22h33
  2. [Débutant] Lecture des données à partir d'une console
    Par zdig10 dans le forum C#
    Réponses: 6
    Dernier message: 14/09/2011, 13h01
  3. Réponses: 0
    Dernier message: 05/04/2011, 01h09
  4. Réponses: 2
    Dernier message: 16/07/2007, 13h46
  5. [MySQL] Traitement de Formulaire : générer des ensemble à partir d'une boucle foreach
    Par yodaazen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2006, 15h28

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