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 un XML


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Par défaut [SimpleXML] Trier un XML
    Bonjour voici mon fichier XML :

    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
    17
    18
    <photos>
        <dossier type = "route">
            <liste>
                <photo nom = "photo2.JPG">
                    <orientation>paysage</orientation>
                    <message>Un message pour la photo</message>
                </photo>
                <photo nom = "photo1.JPG">
                    <orientation>portrait</orientation>
                    <message>Un deuxieme message pour la photo</message>
                </photo>
                <photo nom = "photo3.JPG">
                    <orientation>paysage</orientation>
                    <message>Un message pour la photo</message>
                </photo>
            </liste>
        </dossier>
    </photos>

    Je voudrais afficher mes photos, avec un tri, les paysages d'abord, les portraits ensuite.

    Je le parse ensuite en php via SimpleXml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $dossiers = simplexml_load_file('xml/photos.xml')->xpath('//photos/dossier[@type="route"]');
     
    foreach ($dossiers as $dossier)
    {
        ....
    }
    Si vous connaissez la façon de faire. Peut être avec XPath, merci !

  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
    La méthode XPath renvoyant un tableau d'objets SimpleXMLElement on peut facilement s'en sortir à l'aide de la fonction usort :
    Code PHP : 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_orientation($photo1, $photo2) {
        if ($photo1->orientation == $photo2->orientation) {
            return strcmp($photo1['nom'], $photo2['nom']);
        } else {
            return ($photo1->orientation == 'paysage' ? -1 : 1);
        }
    }
     
    $xml = simplexml_load_file('xml/photos.xml');
    $photos = $xml->xpath('//photo');
    usort($photos, 'sort_by_orientation');
    foreach ($photos as $p) {
        echo $p['nom'] . '<br />';
    }

  3. #3
    Membre éclairé Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Par défaut
    Oui merci, ça fonctionne, la fonction sort_by_orientation() permet en fait de trier les images par nom si le mode est le même, sinon classe en fonction de l'orientation ?

  4. #4
    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
    Oui, c'était l'idée. Pourquoi ?

  5. #5
    Membre éclairé Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Par défaut
    Non, c'était juste pour comprendre, enfin ça marche ...

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

Discussions similaires

  1. [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
  2. [SimpleXML] lire fichier xml
    Par ecoinfo dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/07/2006, 20h22
  3. [SimpleXML] Problème PHP5/XML pour des affichages particuliers
    Par vanilla dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 20/04/2006, 13h22
  4. [SimpleXML] Parser un XML et en récupérer des valeurs
    Par mickael.be dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 15/04/2006, 15h08
  5. [SimpleXML] Générer un XML grâce à un formulaire (sans BDD)
    Par greg1386 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 29/01/2006, 01h04

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