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 les résultats grâce aux attributs


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 [SimpleXML] Trier les résultats grâce aux attributs
    Salut à tous,
    J'ai un document XML avec cette structure :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <document>
        <menu ordre="2" etiquette="Menu1" />
        <menu ordre="3" etiquette="Menu2" />
        <menu ordre="1" etiquette="Menu3" />
    </document>
    Comment faire avec SimpleXML pour avoir une résultat comme cela :

    Menu3
    Menu1
    Menu2


    Un tri grâce aux attributs ordre

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 132
    Points : 99
    Points
    99
    Par défaut
    tu pourrais à l'aide d'une boucle stocké la référence de chaque éléments dans un tableau associatif avec pour clé l'attribut 'ordre' ensuite tu tries ton tableau à l'aide de asort()

  3. #3
    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 777
    Points
    17 777
    Par défaut
    Avec usort :
    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
    function sort_by_ordre($menu1, $menu2) {
        $ordre1 = intval($menu1['ordre']);
        $ordre2 = intval($menu2['ordre']);
        if ($ordre1 == $ordre2) {
            return 0;
        } else {
            return ($ordre1 < $ordre2) ? -1 : 1;
        }
    }
     
    $xml = simplexml_load_file('monFichier.xml');
    $menus = $xml->xpath('//menu');
    usort($menus, 'sort_by_ordre');
    foreach ($menus as $m) {
        echo $m['etiquette'] . '<br />';
    }
    (non testé)

  4. #4
    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 vos réponses

    Citation Envoyé par SPKlls Voir le message
    tu pourrais à l'aide d'une boucle stocké la référence de chaque éléments dans un tableau associatif avec pour clé l'attribut 'ordre' ensuite tu tries ton tableau à l'aide de asort()
    Je vais voir avec asort() , je débute donc ça prendrais surement du temps

    julp j'ai essayé le code ça me renvoie :

    Menu1
    Menu2
    Menu3

    donc aucun tri.

  5. #5
    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 777
    Points
    17 777
    Par défaut
    Désolé, j'ai oublié d'en adapter une partie (je l'ai édité pour corriger).

  6. #6
    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
    ça marche bien, merci beaucoup pour la solution et les réponses rapides
    Je n'ai plus qu'a prendre le temps pour mieux comprendre le code.
    @+

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

Discussions similaires

  1. Trier les résultats d'une requête à l'aide d'un listbox
    Par magoo33 dans le forum Coldfusion
    Réponses: 2
    Dernier message: 17/11/2008, 23h27
  2. Moteur de recherche : comment trier les résultats par pertinence
    Par aucunIDdeLibre dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/12/2007, 14h42
  3. [MySQL] Trier les résultats en fonction d'une colonne ordre
    Par eclipse012 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 05/01/2007, 14h59
  4. [SimpleXML] Filtrer des balises grâce à leurs attributs
    Par tatayecorp dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 15/08/2006, 21h06
  5. [MySQL] Trier les résultats résultant d'une BDD
    Par florent dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/12/2005, 21h22

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