jointure récalcitrante

Je m'arrache les cheveux sur une question de syntaxe :
Je cherche à utiliser comme icone GIS le logo des mots-clefs associés aux points géolocalisés associés à l'article 8
(2 points sont associés à cet article : N° 23 et N° 24)
Dans les 2 boucle, #ID_GIS est correct (enfin, je veux dire que la valeur numérique s'affiche bien)

=> Qui pourrait me dire pourquoi la syntaxe 2 n'est pas opérante ?

====================== SYNTAXE 1 ================================

<BOUCLE_art(ARTICLES){gis}{id_article=8}{id_rubrique ?}{id_secteur ?}{id_mot ?}{id_groupe ?}{id_auteur ?}{recherche ?}{0, 1}{","}>
    #ID_GIS
      <BOUCLE_mot(MOTS){mots_liens.id_objet=24}>
      #LOGO_MOT
      </BOUCLE_mot>
      pas de résultat
      <//B_mot>

</BOUCLE_art>

=> La boucle mot renvoie bien le logo

====================== SYNTAXE 2 ================================
<BOUCLE_art(ARTICLES){gis}{id_article=8}{id_rubrique ?}{id_secteur ?}{id_mot ?}{id_groupe ?}{id_auteur ?}{recherche ?}{0, 1}{","}>
    #ID_GIS
      <BOUCLE_mot(MOTS){mots_liens.id_objet=#ID_GIS}>
      #LOGO_MOT
      </BOUCLE_mot>
      pas de résultat
      <//B_mot>

</BOUCLE_art>

=> La boucle mot ne renvoie rien (affichage : "pas de résultat")

conseil pratique général :
Met tout ça dans un minisquelette où ya que ça
en donnant un nom différent à chacune des boucles
et appelle le avec ?var_mode=debug

Puis cliques sur le lien "Résultat"
et tu verras la requête SQL générée
qui te permettra de voir comment SPIP a traduit ce que tu lui demandes.

Mais là en l'occurence, une correction probable consisterait à faire
#SET{id_gis,#ID_GIS} avant ta boucle_mot
et utiliser #GET{id_gis} plutôt que #ID_GIS dans boucle_mot

JL

Le 04/04/2020 à 09:19, Manu a écrit :

Je m'arrache les cheveux sur une question de syntaxe :
Je cherche à utiliser comme icone GIS le logo des mots-clefs associés aux points géolocalisés associés à l'article 8
(2 points sont associés à cet article : N° 23 et N° 24)
Dans les 2 boucle, #ID_GIS est correct (enfin, je veux dire que la valeur numérique s'affiche bien)

=> Qui pourrait me dire pourquoi la syntaxe 2 n'est pas opérante ?

====================== SYNTAXE 1 ================================

<BOUCLE_art(ARTICLES){gis}{id_article=8}{id_rubrique ?}{id_secteur ?}{id_mot ?}{id_groupe ?}{id_auteur ?}{recherche ?}{0, 1}{","}>
#ID_GIS
<BOUCLE_mot(MOTS){mots_liens.id_objet=24}>
#LOGO_MOT
</BOUCLE_mot>
pas de résultat
<//B_mot>

</BOUCLE_art>

=> La boucle mot renvoie bien le logo

====================== SYNTAXE 2 ================================
<BOUCLE_art(ARTICLES){gis}{id_article=8}{id_rubrique ?}{id_secteur ?}{id_mot ?}{id_groupe ?}{id_auteur ?}{recherche ?}{0, 1}{","}>
#ID_GIS
<BOUCLE_mot(MOTS){mots_liens.id_objet=#ID_GIS}>
#LOGO_MOT
</BOUCLE_mot>
pas de résultat
<//B_mot>

</BOUCLE_art>

=> La boucle mot ne renvoie rien (affichage : "pas de résultat")

S

Le 04/04/2020 à 09:47, JLuc a écrit :

conseil pratique général :
Met tout ça dans un minisquelette où ya que ça
en donnant un nom différent à chacune des boucles
et appelle le avec ?var_mode=debug

Puis cliques sur le lien "Résultat"
et tu verras la requête SQL générée
qui te permettra de voir comment SPIP a traduit ce que tu lui demandes.

C'est ce que j'avais fait mais n'arrivais pas à comprendre pourquoi
le critère {mots_liens.id_objet=#ID_GIS}
ne conduisait à rien, d'où cette question sur la liste

Mais là en l'occurence, une correction probable consisterait à faire
#SET{id_gis,#ID_GIS} avant ta boucle_mot
et utiliser #GET{id_gis} plutôt que #ID_GIS dans boucle_mot

Effectivement, c'est OK
Pour ma compréhension des choses, pourquoi cette écriture qui passe par un #SET puis #GET fonctionne-t-elle et pas direcetment #ID_GIS ?

Le 04/04/2020 à 10:58, Manu a écrit :

Pour ma compréhension des choses, pourquoi cette écriture qui passe par un #SET puis #GET fonctionne-t-elle et pas directement #ID_GIS ?

C'est le compilateur qui analyse et décide ça, en se trompant ici semble t il.
Si tu communiquais le résultat du debug on en saurait plus.

Peut être aussi pourrais tu aider le compilateur en explicitant la boucle d'où vient cette balise

JL