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 :

[DOM XML] Faire un tri avec avec un attribut


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 105
    Points : 84
    Points
    84
    Par défaut [DOM XML] Faire un tri avec avec un attribut
    mon problème est comme dans le sujet Trier les résultats grâce aux attributs sauf que c'est avec un tableau d'objets

    Voici le code de mon fichier doc.xml
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <document>
        <menu ordre="2" nom="Menu1" />
        <menu ordre="3" nom="Menu2" />
        <menu ordre="1" nom="Menu3" />
    </document>
    code php de mon script
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        $doc= new  domDocument();
        $doc->load('doc.xml');
        $pages = $doc->getElementsByTagName('menu');

    Je souhaite faire un tri du tableau $pages grâce à l'attribut ordre pour avoir la résultat
    • Menu3
    • Menu1
    • Menu2

    parce que j'ai fait pas mal de recherche et j'ai pas trouvé la solution et j'ai essayé avec usort mais ça fonctionne pas :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function sort_by_ordre($menu1, $menu2) {
        $ordre1 = intval($menu1->getElementsByTagName('ordre'));
        $ordre2 = intval($menu2->getElementsByTagName('ordre'));
        if ($ordre1 == $ordre2)
            return 0;
        else
            return ($ordre1 < $ordre2) ? -1 : 1;
    }
    usort($pages, 'sort_by_ordre');

  2. #2
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Il faudrait convertir $pages en un tableau pour utiliser usort car getElementsByTagName ne retourne pas un tableau mais un objet DomNodeList.

    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
    function sort_by_ordre($menu1, $menu2) {
        $ordre1 = intval($menu1->getAttribute('ordre'));
        $ordre2 = intval($menu2->getAttribute('ordre'));
        if ($ordre1 == $ordre2)
            return 0;
        else
            return ($ordre1 < $ordre2) ? -1 : 1;
    }
     
    $doc= new DomDocument();
    $doc->load('doc.xml');
     
    $pages = array();
    foreach ($doc->getElementsByTagName('menu') as $n) {
        $pages[] = $n;
    }
    usort($pages, 'sort_by_ordre');
     
    foreach ($pages as $n) {
        echo $n->getAttribute('nom') . PHP_EOL;
    }
    Mauvais forum => ça aurait dû être DOM

  3. #3
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 105
    Points : 84
    Points
    84
    Par défaut
    Merci pour l'aide ça fonctionne parfaitement

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

Discussions similaires

  1. Php et XML : Faire du tri
    Par nydaunvan dans le forum Langage
    Réponses: 1
    Dernier message: 19/12/2009, 22h57
  2. [DOM] Faire un tri avec Domdocument
    Par starr dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/03/2007, 20h31
  3. Faire un tri avec le champ d'un sous-formulaire ?
    Par PierreR dans le forum Access
    Réponses: 6
    Dernier message: 06/10/2006, 13h35
  4. Erreur avec l'API dom xml
    Par bluemartini dans le forum Langage
    Réponses: 8
    Dernier message: 23/06/2006, 11h05
  5. Faire une liaison externe avec un fichier xml
    Par vodevil dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/01/2006, 11h18

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