Bonjour,
Depuis plusieurs jours, j’essaie de trier les valeurs d’un <select>
qui va me chercher les données d’un champs extra associé aux articles et qui a la caractéristique de pouvoir être une sélection multiple.
Dans ma boucle ci-dessous, je paramètre bien le critère de tri, qui fonctionne à la nuance près que dans les cas où j’ai plusieurs valeurs associées à un article, cela va fausser le tri souhaité. Ma boucle + quelques illustrations ci-dessous pour mieux expliquer ce qu’il se passe.
Ma boucle :
<BOUCLE_test_tri(ARTICLES){0,1}>
<label for="selection">Support</label>
<select name="support" id="selection">
<option value="">Sélectionner un support</option>
<BOUCLE_selec_m(ARTICLES){type_contenu=9}{fusion (support)}{par support}>
<BOUCLE_selec_f(DATA){source tableau, #LISTER_VALEURS**{support}}>
[<option VALUE="[(#CLE)]"[(#ENV{support}|=={[(#CLE)]}|?{'selected="selected"',''})]>(#CLE|unique) - #ID_ARTICLE</option>]
</BOUCLE_selec_f>
</BOUCLE_selec_m>
</select>
</BOUCLE_test_tri>
Cela me donne donc ceci :
La visualisation par requête SQL me fait comprendre la logique du tri justement faussée par les cas de sélections multiples dans certains articles :
Pour m’en sortir, je me dis qu’il faudrait que j’enregistre mes données à trier dans un tableau pour sortir de la logique de tri de la table « spip_articles » (sans trop savoir comment pourvoir le réintégrer ensuite dans mon select ), mais le résultat reste sensiblement le même je ne trouve pas de façon de trier le tableau sur la base de la première colonne… (hors paramètre de boucle qui me ramène à la table « spip_articles »).
Bout de code pour le tableau :
<BOUCLE_fool(ARTICLES){type_contenu=9}{par support}>
<BOUCLE_gool(DATA){source tableau, #LISTER_VALEURS**{support}}>
[(#ARRAY{#CLE,#VALEUR}|foreach|unique)]
</BOUCLE_gool>
</BOUCLE_fool>
Ce qui me donne :
Si une âme charitable a une idée, je suis preneur .