8
Indiquez l’intérêt que vous portez à cette question
0

NULL dans un critère conditionnel ?=

Bonjour à tous ;

Des documents sont liés à mes articles, et disposent d’un mot-clé indiquant leur "type" (desktop, mobile, tablet).

Je cherche à afficher, par défaut, tous les documents de article, ou uniquement ceux qui répondent à un filtre passé dans l’url &type_visuel=XXX

J’ai donc une boucle qui va chercher tous les documents de l’article puis à l’intérieur, une boucle sur son mot-clé qui me permet de filtrer via un {titre ?= #ENV{type_visuel}}

<BOUCLE_visuals(DOCUMENTS){id_article}>
        <BOUCLE_visual_type(MOTS){id_document}{titre ?= #ENV{type_visuel}}>
        <div class="project-visual[ project-visual-(#TITRE|strtolower)]">
                <img src="[(#FICHIER|url_absolue)]"[ alt="(#_visuals:TITRE|textebrut)"]>
        </div>
        </BOUCLE_visual_type>
</BOUCLE_visuals>

Si je passe un filtre à l’url, tout se passe bien et seul les documents qui répondent au filtre sont affichés. Mais si je n’ai pas de #ENVtype_visuel, rien ne s’affiche.

Le var_mode=debug me permet de voir que la requête SQL ne renvoi aucun résultat car cible les articles dont le titre est NULL.
Pourtant, le critère {titre ?= ...} devrait être totalement ignoré puisque je n’ai aucun #ENV{type_visuel}

SELECT mots.type
FROM spip_mots AS `mots`  
INNER JOIN spip_mots_liens AS L1 ON ( L1.id_mot = mots.id_mot )
WHERE (L1.id_objet = 4)
        AND (L1.objet = 'document')
        AND (mots.titre = NULL)

A noter que si je fais un teste avec {type ?= #ENV{type_visuel}} alors le comportement est le bon (pas de AND (mots.type = NULL)) dans la requête SQL...

Bref, je suis un peu perdu.

Toute idée est bienvenue !