(ceci est un message automatique)
Message posté par denisb <denisb@laposte.net> à la suite de l'article «
{critère ?} ».
http://www.spip.net/ecrire/?exec=articles&id_article=3996#id174006
** {critère ?}
* nouvelle proposition de rédaction de l'article id_rubrique ? ou
id_rubrique ?= #ENVid_rubrique
S'il existe un id_rubrique (nn) dans l'environnement d'exécution de la
boucle, le critère ne sélectionnera que les données correspondantes à
l'égalité id_rubrique = #ENVid_rubrique SELECT articles.titre,
articles.lang
FROM spip_articles AS `articles`
WHERE articles.statut = 'publie'
AND articles.id_rubrique = nn
S'il n'existe pas d'id_rubrique dans l'environnement d'exécution de la
boucle, le critère sera totalement ignoré SELECT articles.titre,
articles.lang
FROM spip_articles AS `articles`
WHERE articles.statut = 'publie'
On notera que {id_rubrique ?} est équivalent à {id_rubrique?} à
{id_rubrique ?= #ENV{id_rubrique}} et à {id_rubrique?=#ENV{id_rubrique}}
Quel intérêt alors à utiliser ce dernier type de notation ?
Si, plutôt qu'une stricte égalité, nous voulons sélectionner les
données qui répondent à une particularité liée au critère de
sélection : par exemple {id_rubrique ?== ^#ENV{id_rubrique}}
Avec ce critère, nous voulons sélectionner toutes les rubriques dont
l'id débute avec l'id_rubrique (nn) présent dans l'environnment
d'exécution de la boucle ; SELECT articles.titre, articles.lang
FROM spip_articles AS `articles`
WHERE articles.statut = 'publie'
AND articles.id_rubrique REGEXP '^nn'
et s'il n'y a pas d'id_rubrique dans l'environnement, alors nous ne
voulons pas que ce critère soit utilisé. SELECT articles.titre,
articles.lang
FROM spip_articles AS `articles`
WHERE articles.statut = 'publie'
Attention :
Si pour un critère non conditionnel il est possible d'utiliser une
variable d'environnement de nom quelconque (truc=nn) comme terme de
l'égalité : par exemple {id_rubrique = #ENV{truc}} SELECT articles.titre,
articles.lang
FROM spip_articles AS `articles`
WHERE articles.statut = 'publie'
AND articles.id_rubrique = nn
pour un critère conditionnel , il est obligatoire d'utiliser une
variable de même nom que le critère.
ainsi {id_rubrique ?= #ENV{truc}} ne fonctionnera pas (le critère sera
ignoré) même si truc=nn est défini dans l'environnement. SELECT
articles.titre, articles.lang
FROM spip_articles AS `articles`
WHERE articles.statut = 'publie'