{critère IN valeur1, valeur2[, valeur3,..., valeurN]}

{... IN ...} limite l’affichage aux résultats ayant un critère appartenant à un ensemble fini.

{xxxx IN a,b,c,d} limite l’affichage aux résultats ayant le critère xxxx égal à a, b, c ou d.

Les résultats sont triés dans l’ordre indiqué (sauf demande explicite d’un autre critère de tri). Il est aussi possible de sélectionner des chaînes de caractères, par exemple avec {titre IN 'Chine', 'Japon'}

Passer en argument un tableau

C’est possible et c’est aussi le seul moyen de passer dynamiquement une liste de valeur avec le critère IN.

Ainsi :

#SET{mes_rubriques, '1,2,3'}
<BOUCLE_a(ARTICLES){id_rubrique IN #GET{mes_rubriques}}>
    <h3>#TITRE</h3>
</BOUCLE_a>

…ne fonctionnera pas. Alors que…

#SET{mes_rubriques, #LISTE{1,2,3}}
<BOUCLE_a(ARTICLES){id_rubrique IN #GET{mes_rubriques}}>
    <h3>#TITRE</h3>
</BOUCLE_a>

… fonctionnera.

Il peut s’agir d’un tableau défini par les balises

ou bien d’un tableau provenant d’une balise #GET ou #ENV**{mon_post}.

Si #ENV{mon_post} est un tableau (venant par exemple de saisies de formulaire dont l’attribut name se termine par []), et si les filtres d’analyse ont été désactivés en suffixant cette balise par une double étoile, alors chaque élément du tableau sera considéré comme argument de IN, SPIP appliquant les filtres de sécurité sur chacun d’eux [1].

Le squelette standard fourni dans plugins-dist/forum/formulaires/inc-forum_previsu.html fournit un exemple d’utilisation avec une boucle MOTS ayant le critère {id_mot IN #ENV**{ajouter_mot}} :
cette boucle sélectionne seulement les mots-clés appartenant à un ensemble indiqué dynamiquement. Ici, cet ensemble aura été construit par le formulaire du squelette standard « choix_mots », qui utilise l’attribut name=ajouter_mot[].

Utilisation conditionnelle de l’opérateur IN dans un critère de boucle

exemple d’utilisation :

-  si #ID_ARTICLE est présent dans l’environnement et quelle que soit sa valeur :

<BOUCLE_a(ARTICLES) {id_article ?IN 11,12,13}>

… n’affichera que les articles dont l’id est dans la liste IN

<BOUCLE_a(ARTICLES) {id_article ?!IN 11,12,13}>

… n’affichera que les articles dont l’id n’est pas dans la liste IN [2]

-  si #ID_ARTICLE n’est pas présent dans l’environnement :

<BOUCLE_a(ARTICLES) {id_article ?IN 11,12,13}>

… affichera tous les articles y compris ceux dont l’id est dans la liste IN

<BOUCLE_a(ARTICLES) {id_article ?!IN 11,12,13}>

… affichera tous les articles y compris ceux dont l’id est dans la liste IN [2]

Voir aussi

Critères conditionnels

Opérateurs logiques

Opérateurs

Notes

[2pour rappel : {id_article !IN 11,12,13} sélectionne les articles dont l’id n’est pas dans la liste 11, 12, 13 (voir critère !opérateur valeur)

Auteur BoOz Publié le : Mis à jour : 19/09/18

Traductions : català, English, Español, français, Nederlands