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

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] soucis accès aux données enfants d'enfants dynamique


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Points : 11
    Points
    11
    Par défaut [SimpleXML] soucis accès aux données enfants d'enfants dynamique
    Bonjour,

    J'ai un soucis avec simpleXML.

    Je récupère un XML et j'essaye d’accéder aux données. J'arrive accéder aux enfants, aux enfants des enfants mais pas aux enfants des enfants dynamiques.

    Voici un 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
    <Game>
      <Members>
          <Member id="1">
             <Aspect type="1" level="2">
             <Aspect type="2" level="7">
             <Aspect type="3" level="1">
          </Member>
          <Member id="2">
             <Effect type="8" value="15"> 
             <Effect type="2" value="10">     
             <Aspect type="1" level="8">
             <Aspect type="2" level="22">
             <Aspect type="3" level="11">
          </Member>
      </Members>
    </Game>
    Comme on peut le voir le Membre 2 à 2 effects. Je voudrais récupérer tous les effects et les associer à l'id du membre

    J'ai fait :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $xml = simplexml_load_string($string);
     
    $members= $xml->xpath('/Game/Members/Member');
     
    for ($i=0; $i<sizeof($members); $i++)
    {
       foreach ($members[$i]->Effect->attributes() as $key => $val)
       {
          echo $key." - ".$val."<br>";
       }
    }

    mais ça m'affiche des erreurs de type :
    Warning: main() [function.main]: Node no longer exists
    et ça m'affiche que le 1er effet

    D'où vient l'erreur et comment avoir tous les effects ?

    Merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si tu veux les effets c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $effects = $xml->xpath('//Effect');
     
    foreach($effects as $effect)
    {
        foreach ($effect->attributes() as $key => $val)
        {
            echo $key, ' - ', $val, '<br/>';
        }
    }
    et pas besion de for pour parcourir ton premier tableau, foreach est la (en plus sizeof c'est un alias)


    sinon que veux tu dire ?
    et les associer à l'id du membre

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse mais cela ne convient pas.

    Si je fais une boucle for, c'est pour récupérer le $i qui est le compteur de la boucle et donc associé l'id du member.

    En effet, je veux récupérer les effects mais pour chaque effet, je dois savoir de quel parent il est et ce par l'id.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par jerome572 Voir le message
    Merci pour ta réponse mais cela ne convient pas.

    Si je fais une boucle for, c'est pour récupérer le $i qui est le compteur de la boucle et donc associé l'id du member.

    En effet, je veux récupérer les effects mais pour chaque effet, je dois savoir de quel parent il est et ce par l'id.
    oui tu veux que $key soit l'id ?
    qu'est ce que tu voudrais vraiment a la fin ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    En fait, je souhaiterais pour chaque effect que je récupère avec l'id du member parent (Member id="1")

    En gros j'aimerais afficher :
    idMember - typeEffect - levelEffect

    Ce qui donnerai le cas là :
    2 - 8 - 15
    2 - 2 -10

    Ensuite je ferais pareil pour les Aspects

    Voila

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    comme ca :
    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
    $members = $xml->xpath('/Game/Members/Member');
     
    foreach($members as $member)
    {	
        foreach($member->Effect as $effect)
        {
        	echo $member->attributes()->id;
     
            foreach($effect->attributes() as $attr)
            {
            	echo ' - ', $attr;
            }
     
            echo '<br />';
        }
    }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Ca marche nickel

    Merci

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

Discussions similaires

  1. [Débutant] régle d'accès aux pages enfants
    Par Sardonics dans le forum ASP.NET
    Réponses: 12
    Dernier message: 15/04/2015, 09h25
  2. Classe héritant de Array / Souci d'accès aux données
    Par kraps dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 22/07/2009, 15h18
  3. [débutant] avoir accès aux données de la base BCDI 3
    Par Valichou dans le forum Bases de données
    Réponses: 7
    Dernier message: 06/05/2004, 13h13
  4. accès aux donnée d'un DBGRID
    Par relax_06 dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/03/2004, 23h06
  5. [TDataModule] Intérêt de séparer les accès aux données?
    Par Cornell dans le forum Bases de données
    Réponses: 5
    Dernier message: 05/09/2003, 16h42

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