Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche DOM).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/09/2008, 20h17   #1
Membre du Club
 
Étudiant
Inscription : mars 2008
Messages : 105
Détails du profil
Informations personnelles :
Âge : 24
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 105
Points : 45
Points : 45
Envoyer un message via Yahoo à Zaki_SDwin
Par défaut Trier les résultats grâce aux attributs

Salut à tous,
J'ai un document XML avec cette structure :
Code XML :
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
Zaki_SDwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 21h32   #2
Membre du Club
 
Inscription : décembre 2007
Messages : 132
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 132
Points : 63
Points : 63
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()
SPKlls est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 22h20   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Avec usort :
Code :
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é)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 00h20   #4
Membre du Club
 
Étudiant
Inscription : mars 2008
Messages : 105
Détails du profil
Informations personnelles :
Âge : 24
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 105
Points : 45
Points : 45
Envoyer un message via Yahoo à Zaki_SDwin
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.
Zaki_SDwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 00h42   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Désolé, j'ai oublié d'en adapter une partie (je l'ai édité pour corriger).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 00h48   #6
Membre du Club
 
Étudiant
Inscription : mars 2008
Messages : 105
Détails du profil
Informations personnelles :
Âge : 24
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2008
Messages : 105
Points : 45
Points : 45
Envoyer un message via Yahoo à Zaki_SDwin
ç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.
@+
Zaki_SDwin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h16.


 
 
 
 
Partenaires

Hébergement Web