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] Boucles


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 28
    Par défaut [SimpleXML] Boucles
    Bonjour,
    J'ai fais une recherche mais je n'ai pas trouvé mon bonheur.
    J'ai un fichier XML de ce type

    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
    <SESSIONS>
            <SESSION date="2010-02-28">
              <EVENTS>
                <EVENT eventid="1058" gender="M">
                  <SWIMSTYLE distance="200" stroke="FREE" />
                  <AGEGROUPS>
                    <AGEGROUP agegroupid="1059" agemax="11" agemin="11" />
                    <AGEGROUP agegroupid="1088" agemax="12" agemin="12" />
                    </AGEGROUPS>
                </EVENT>
                <EVENT eventid="1060" gender="F">
                  <SWIMSTYLE distance="200" stroke="BREAST" />
                  <AGEGROUPS>
                    <AGEGROUP agegroupid="1094" agemax="11" agemin="11" />
                    <AGEGROUP agegroupid="1095" agemax="12" agemin="12" />
                    <AGEGROUP agegroupid="1096" agemax="13" agemin="13" />
                  </AGEGROUPS>
                </EVENT>
              </EVENTS>
           <SESSION>
          </SESSION>
    Je débute en traitement de fichier XML, le code que j'ai en PHP pourrait paraître débutantesque...

    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
    foreach($xml->MEETS->MEET->SESSIONS->SESSION->EVENTS->EVENT as $event)
    {
    $eventid = $event['eventid'];
    $sexe = $event['gender'];
    $swim = $xml->MEETS->MEET->SESSIONS->SESSION->EVENTS->EVENT->SWIMSTYLE;
    $dist = $swim['distance'];
    $styl = $swim['stroke'];
    echo $dist.$styl;
    foreach ($xml->MEETS->MEET->SESSIONS->SESSION->EVENTS->EVENT->AGEGROUPS->AGEGROUP as $age)
    $ageid = $age['agegroupid']; 
    $agemax = $age['agemax']; 
    $agemin = $age['agemin'];
    echo $agemin.$agemax;
    }
    }
    Mon souci est que lorsque je veux récupérer les attributs, cela marche pour EVENT, mais pour SWIMSTYLE et AGEGROUP je récupère les mêmes données dans chaque boucle.
    Dans l'exemple, j'ai 2 fois "200 FREE" au lieu d'avoir une ligne "200 FREE" et une ligne "200 BREAST", idem pour AGEGROUP.
    Une idée ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Parce qu'il faut reprendre l'élément courant ? (l'itération intérieure reprend l'objet SimpleXMLElement de celle en cours au lieu de repartir de zéro, "en absolu", comme vous le faites).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    foreach ($xml->MEETS->MEET->SESSIONS->SESSION->EVENTS->EVENT as $event) {
        $eventid = $event['eventid'];
        $sexe = $event['gender'];
        $swim = $event->SWIMSTYLE;
        $dist = $swim['distance'];
        $styl = $swim['stroke'];
        echo $dist . $styl;
        foreach ($event->AGEGROUPS->AGEGROUP as $age) {
            $ageid = $age['agegroupid']; 
            $agemax = $age['agemax']; 
            $agemin = $age['agemin'];
            echo $agemin . $agemax;
        }
    }
    Sinon c'est possible d'avoir des codes complets ?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 28
    Par défaut
    super top, ça marche
    J'imaginais bien que ce devait être ultra simple comme réponse, désolé...

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

Discussions similaires

  1. problème avec simpleXML et boucle while
    Par mawkli dans le forum Langage
    Réponses: 2
    Dernier message: 27/07/2012, 16h08
  2. probleme boucle foreach simplexml
    Par magieweb dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 19/01/2009, 21h49
  3. [SimpleXML] Boucle "for" n'affiche pas le résultat que je veux
    Par sasaas dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 20/02/2008, 15h05
  4. [SimpleXML] Google Maps, Problème d'encoding dans une boucle
    Par yahn dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/09/2006, 19h40
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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