[SPIP Zone] Syntaxe champs extras

Salut,

je tourne le truc dans tous les sens, mais je dois rater qqch : J’ai un champs extra #TOTO de type checkbox avec 2 valeurs : val1 et val2.

Je veux faire un test pour afficher qqch en fonction de chaque valeur cochée, sachant qu’il est possible de cocher les 2 valeurs :

  • si val1 > afficher « valeur 1 cochée »
  • si val2 > afficher « valeur 2 cochée »

#TOTO renvoie les valeurs cochées séparées pas des virgules. Je fais donc [(#LISTE{#TOTO}|find{val1}) Choix 1 coché] mais ça ne fonctionne que si val1 est cochée et pas si val1 ET val2 sont cochées.

J’imagine que ça se joue au niveau de #TOTO car si je le remplace par val1,val2, ça fonctionne…

Merci,

jean marie

Tu peux utiliser la balise #LISTER_VALEURS**{toto}

C’est possible sans, mais [(#LISTE{#TOTO})] ça va te donner un tableau avec une seule valeur
Il faut plutôt faire [(#TOTO|explode{’,’})]

Salut,

merci pour ton retour.

#LISTER_VALEURS**{toto} et [(#TOTO|explode{’,’})] me renvoient simplement Array. Idem pour [(#TOTO|foreach)].

[(#LISTER_VALEURS**{conditionnement}|explode{’,’})] me donne un warning PHP (Warning: explode() expects parameter 2 to be string, array given in D:\XXXXX\spip3-2\ecrire\inc\filtres.php on line 4120).

J’ai tenté de les passer par un SET/GET, mais ça ne change rien…

jean marie

Le 01/02/2018 à 10:43, Jean Marie Grall a écrit :

Salut,

merci pour ton retour.

#LISTER_VALEURS**{toto} et [(#TOTO|explode{‹ , ›})] me renvoient simplement Array. Idem pour [(#TOTO|foreach)].

Ça renvoie un tableau qu’il faut l’utiliser dans ton test.

[(#LISTER_VALEURS**{toto}|array_keys|find{val1}|oui) Cache 1 cochée ]

Le 01/02/2018 à 11:06, Charles Razack a écrit :

Ça renvoie un tableau qu'il faut l'utiliser dans ton test.

[(#LISTER_VALEURS**{toto}|array_keys|find{val1}|oui) Cache 1 cochée ]

Bien vu, c'est le array_keys qui me manquait !

Merci pour le coup de main :slight_smile:

             jean marie

Salut,

alors en fait, j'ai affiné la solution, donc je poste ça là si ça peut servir.

Le 01/02/2018 à 11:50, Jean Marie Grall a écrit :

Le 01/02/2018 à 11:06, Charles Razack a écrit :

Ça renvoie un tableau qu'il faut l'utiliser dans ton test.

[(#LISTER_VALEURS**{toto}|array_keys|find{val1}|oui) Cache 1 cochée ]

Bien vu, c'est le array_keys qui me manquait !

Merci pour le coup de main :slight_smile:

Au lieu de tester la présence de chaque valeur, il vaut (évidemment!) mieux faire une boucle DATA sur le champ extra.

Donc, au lieu de :
[(#LISTER_VALEURS**{monchampextra}|array_keys|find{valeur1}|oui) Case 1 cochée ]
[(#LISTER_VALEURS**{monchampextra}|array_keys|find{valeur2}|oui) Case 2 cochée ]
ad lib (ça devient chiant au bout de la 4e valeur)...

Il vaut mieux faire :
<BOUCLE_champ_extra(DATA){source table,#LISTER_VALEURS**{monchampextra}}>
#CLE / #VALEUR cochée
</BOUCLE_champ_extra>

Voilà,

                 jeanmarie