Comment créer un select à partir d'un tableau ?

Bonjour,

Je créé un tableau comme ceci :

<BOUCLE_test (ARTICLES){id_rubrique}>
<BOUCLE_test_f(DATA){source tableau, #LISTER_VALEURS**{support}}>
[(#ARRAY{#CLE,#VALEUR}|foreach|unique)]
</BOUCLE_test_f>
</BOUCLE_test>

Qui me sort le résultat suivant :

1=> label 1
27=> label 27
25=> label 25
32=> label 32
22=> label 22
42=> label 42
46=> label 46
10=> label 10
9=> label 9
15=> label 15

J’aimerais, dans une zone de filtre, utiliser ce tableau sous forme de liste déroulante dans un select, mais je ne parviens pas à mes fins… Si quelqu’un a une idée, je suis preneur :wink:.

Voici mon select, mais je ne vois pas quoi mettre dans la balise <option>

<select name="support_art" id="support_select">
<option value="">Sélectionner un support</option>
<BOUCLE_test (ARTICLES){id_rubrique}>
<BOUCLE_test_f(DATA){source tableau, #LISTER_VALEURS**{support}}>
<option VALUE="___???????___"[(#ENV{support_art}|=={___???????___}|?{'selected="selected"',''})]>___???????___</option>
</BOUCLE_test_f>
</BOUCLE_test>

#CLE et #VALEUR dans ta boucle DATA

ou sinon tu utilise le plugin SAISIE et sa balise #SAISIE

Merci maieul pour ce retour.

J’ai bien exploré la piste #VALEUR et #CLE dans la boucle DATA, mais je n’arrive pas à reproduire la restriction obtenue dans mon tableau seul.

<select name="support_art" id="support_select">
<option value="">Sélectionner un support</option>
<BOUCLE_test (ARTICLES){id_rubrique}>
<BOUCLE_test_f(DATA){source tableau, #LISTER_VALEURS**{support}}>
<option VALUE="[(#CLE)]"[(#ENV{support_art}|=={[(#CLE)]}|?{'selected="selected"',''})]>[(#VALEUR)]</option>
</BOUCLE_test_f>
</BOUCLE_test>

Me donne comme résultat la liste de toutes les valeurs de support renseignées dans les articles de la rubrique, et donc avec énormément de doublons :

label_1
label_27 
label_1
label_1
label_25
label_32
label_1
label_1
label_1
label_1
label_22
etc...

J’arrive à n’afficher que les valeurs uniques via le filtre |unique, mais tous les doublons « apparaissent » quand même comme « champs vides » dans la liste déroulante…

<select name="support_art" id="support_select">
<option value="">Sélectionner un support</option>
<BOUCLE_test (ARTICLES){id_rubrique}>
<BOUCLE_test_f(DATA){source tableau, #LISTER_VALEURS**{support}}>
<option VALUE="[(#CLE)]"[(#ENV{support_art}|=={[(#CLE)]}|?{'selected="selected"',''})]>[(#VALEUR|unique)]</option>
</BOUCLE_test_f>
</BOUCLE_test>

Me donne dans la liste déroulante :

label_1
label_27 


label_25
label_32




label_22
etc...

J’ai essayé une alternative en intégrant le critère {fusion (support)} dans la boucle principale ce qui me fait me rapprocher un peu plus du résultat de mon tableau :

<select name="support_art" id="support_select">
<option value="">Sélectionner un support</option>
<BOUCLE_test (ARTICLES){id_rubrique}{fusion (support)}>
<BOUCLE_test_f(DATA){source tableau, #LISTER_VALEURS**{support}}>
<option VALUE="[(#CLE)]"[(#ENV{support_art}|=={[(#CLE)]}|?{'selected="selected"',''})]>[(#VALEUR)]</option>
</BOUCLE_test_f>
</BOUCLE_test>

Ce qui me donne :

label_1
label_1
label_10
label_1
label_22
label_1
label_27
label_10
label_15
label_22
label_32
label_42
label_46
label_9

J’ai donc encore des doublons, mais je commence à voir d’où vient le soucis. En fait mon Champs Extras support est à choix multiple. Dans certains articles, on retrouve donc l’association :

label_1, label_10
label_1, label_22
label_1, label_27

A mon avis, c’est ce qui explique pourquoi la fusion ne s’applique pas à ces cas de figure… Je ne sais pas s’il y a moyen de contourner cela… Mais ce qui me frustre, c’est que dans mon tableau, j’arrive bien à retrouver ce que je voudrais afficher dans le select

Et enfin, en ce qui concerne #SAISIE, je connais uniquement la syntaxe suivante :

[(#SAISIE{selection, support, label='Support',
option_intro='TOUT',
datas=[(#LISTER_CHOIX**{support})]})]

Le soucis dans mon cas, c’est que ça me liste tous les choix du Champs Extras support, alors que je voudrais uniquement afficher les valeurs uniques de support que l’on retrouve dans les articles de la rubrique dans laquelle je me trouve, sachant que pour rappel, ma difficulté est que ce champs est à choix multiple.

ah ton problème c’est les doublons. Je comprennais pas, désolé, lecture trop rapide.

Faut jusque tu corrige comment tu utilise
[(#VALEUR|unique)]

[<option VALUE="[(#CLE)]"[(#ENV{support_art}|=={[(#CLE)]}|?{'selected="selected"',''})]>(#VALEUR|unique)</option>]

Ca sera mieux.

Relire La syntaxe des balises SPIP - SPIP sur les parties optionnels avant / aprèes les balise, et les pourquoi des parenthèses/crochets, qui ne servent pas que à appliquer des filtres…

C’est moi qui n’avait pas été très clair dans le premier post.

Ah bah oui en effet, ça fonctionne du tonnerre comme ça :smiley:. Trop content !!! Un grand merci maieul pour cette aide précieuse. C’est vraiment sympa de prendre de votre temps pour aider les autres.

1 « J'aime »