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] Trier xml en fonction d'un champ


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2016
    Messages : 41
    Par défaut [SimpleXML] Trier xml en fonction d'un champ
    Bonjour à tous!

    Comme indiqué dans le titre, j'aimerais trier un xml en fonction d'un champs. Voici mon xml (que je récupère avec une url) :
    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
    <Election>
      <Tours>
        <Tour>
          <NumTour>1</NumTour>
            <Resultats>
             <Candidats>
              <Candidat>
                <NumPanneauCand>1</NumPanneauCand>
                <NomPsn>HORTALA</NomPsn>
                <NbVoix>1235187</NbVoix>
                <RapportInscrit>2,53</RapportInscrit>
              </Candidat>
              <Candidat>
                <NumPanneauCand>2</NumPanneauCand>
                <NomPsn>MIREPOIX</NomPsn>
                <NbVoix>6938479</NbVoix>
                <RapportInscrit>14,19</RapportInscrit>
              </Candidat>
              <Candidat>
                [...]
    J'aimerais trier chaque section <Candidat> en fonction de la valeur de<NbVoix>.
    Ici, la première section <Candidat> devrait se retrouver sous la seconde car 6938479>1235187

    J'ai une piste avec ce sujet : https://www.developpez.net/forums/d5...xml-trier-xml/

    Dont voici le code inspiré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function sort_by_score($candidat1, $candidat2) {
        if ($candidat1->NbVoix == $candidat2->NbVoix) {
            return 0;
        } else {
            return ($candidat1->NbVoix < $candidat2->NbVoix) ? -1 : 1;
        }
    }
     
    $xml = simplexml_load_file('url');
    $NbrVoix = $xml->xpath('//Candidat');
    usort($NbrVoix, 'sort_by_score');
    foreach ($NbrVoix as $p) {
        echo $p . '<br />';
    }
    Mais ça n'a pas l'air de marcher...
    Merci par avance pour vos suggestions !

    Bonne journée.

  2. #2
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Salut,
    echo $p ne suffit pas, Si tu veux afficher le nom du candidat par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($NbrVoix as $p) {
        echo (string)$p->NomPsn . '<br />';
    }

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2016
    Messages : 41
    Par défaut
    Merci pour la réponse,

    malheureusement, il ne 'affiche que "Array()" à croire qu'il ne trouve rien...

  4. #4
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    Bizarre ça marche chez moi, peut être un rapport avec ta version de PHP ?
    S'il n'avait rien trouvé, tu n'aurais pas eu l'affichage Array()... Utilise ceci et montre ce que tu obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($NbrVoix as $p) {
       var_dump($p);
    }

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2016
    Messages : 41
    Par défaut
    J'ai la même chose : J'utilise la version 5.6.25 de PHP

  6. #6
    Membre émérite Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 541
    Par défaut
    ça ne devrait pas poser problème avec ta version PHP..
    L'URL est externe à ton site ? Que donnes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
     var_dump($NbrVoix);
    avant d'y appliquer usort

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/12/2016, 20h37
  2. Réponses: 4
    Dernier message: 24/10/2014, 16h13
  3. Réponses: 6
    Dernier message: 29/07/2009, 15h31
  4. [SimpleXML] Trier un XML
    Par ac/dc dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 06/07/2008, 22h01
  5. [SimpleXML] Trier le contenu d'un flux XML
    Par Paulux1 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/07/2007, 10h45

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