Trier par date xml

Bonjour,

eh bien pas le choix je reviens encore sur la liste… Ma liste d’événements est triée par date. Ma date est une valeur de mon fichier XML. Seulement le tri se fait par jour, puis par mois, puis par année, impossible d’obtenir un tri par date y-m-d. J’ai pu voir ceci :

- #SET{tablo,#GET{tablo}|push{#LISTE{(#VAL{Y-m-d}|date{#VALEUR|filemtime}),#VALEUR}}}

Mais cela tri par date la source xml et non par rapport à une date soumise. Je ne vois pas trop comment je peux manipuler cette valeur pour obtenir mon tri par date :-/

Ma vilaine boucle simplifiée :

#SET{trier,#ARRAY}

<BOUCLE_xml(DATA){source xml, monfichier.xml}{datapath Resultat/0}>
#SET{trier,#GET{trier}|push{
#ARRAY{
nom,#VALEUR{0/NOM/0},
date,#VALEUR{0/VALABLE_JUSQU_A/0}
}
}
}
</BOUCLE_xml>

<B_agenda>

<BOUCLE_agenda(DATA){source tableau, #GET{trier}}{par date}{0,10}>
[(#VALEUR{date}|jour)]/[(#VALEUR{date}|mois)] - [(#VALEUR{nom})]
</BOUCLE_agenda>

</B_agenda>

Pensez que j’aurais bien aimé trouver par moi-même mais après avoir décortiqué dans tous les sens… néant…

Teenoo

Désolé du retard au démarrage (gros taf en ce moment) et fort possible que cette réponse ne serve à rien car tu as peut-être déjà solutionné ton pb.

Alors j’avais fais une fonction qui permettait de redater vers le format sql de spip en m’appuyant sur la fonction php suivante :
http://fr.php.net/manual/fr/datetime.createfromformat.php l’idée est de créer une sorte de masque sur le même modèle de date livré par ton xml. Cela donne :

ma fonction redater() à mettre dans mes_fonctions.php :

<?php function redater($texte) { if(empty($texte)) return; else { // entrée : 10/08/2014 00:00:00 $date = date_create_from_format('d/m/Y G:i:s', $texte); return date_format($date, 'Y-m-d H:i:s'); // sortie : 2014-08-10 00:00:00 } } ?>

la boucle XML avec l’ajout de la date, en rouge la fonction redater, on en profite ici :

<BOUCLE_xml(DATA){source xml, #GET{xml}}{datapath Resultat/0}{0,5}>

#SET{trier,#GET{trier}|push{
#ARRAY{
produit,#VALEUR{0/PRODUIT/0},
nom,#VALEUR{0/NOM/0},
ville,#VALEUR{0/ADRPROD_LIBELLE_COMMUNE/0},
date,#VALEUR{0/VALABLE_JUSQU_A/0}|redater
}
}
}
</BOUCLE_xml>

puis l’exploitation de l’#ARRAY

  • #COMPTEUR_BOUCLE -> #CLE #VALEUR{nom} : #VALEUR{produit} : [(#VALEUR{date}|affdate)]

Voilà voili

Ça marche du tonnerre :slight_smile: D’ailleurs sais-tu si on peut utiliser mois_relatif comme critère du fait que la date est de la forme spipienne ? Ou bien faut-il encore extraire les données de la date dans un tableau ?

Teenoo

à priori oui, ça devrait, faut essayer