table spip_documents_lien & id_objet

bonjour,
dans cette boucle :

<BOUCLE_alea(ARTICLES){statut=prepa}>
<BOUCLE_doc_alea(DOCUMENTS){id_objet=40}{vu=non}{par hasard}{extension==jpg}{0,1}{doublons}>
background-image: url([(#FICHIER)]);background-repeat:no-repeat;
</BOUCLE_doc_alea>
</BOUCLE_alea>

comment peut-on faire la jointure entre l'id_article et l'id_objet
en l'état elle fonctionne avec {id_objet=40}
en revanche ça ne fonctionne plus avec {id_objet=id_article} ou {id_objet==id_article}

une idée ?
cordialement
--
Signalez vos spams d'un simple clic. www.signal-spam.fr
<https://www.signal-spam.fr/>

Le 23/12/2009 11:37, bobof a écrit :

bonjour,
dans cette boucle :

<BOUCLE_alea(ARTICLES){statut=prepa}>
<BOUCLE_doc_alea(DOCUMENTS){id_objet=40}{vu=non}{par hasard}{extension==jpg}{0,1}{doublons}>
background-image: url([(#FICHIER)]);background-repeat:no-repeat;
</BOUCLE_doc_alea>
</BOUCLE_alea>

comment peut-on faire la jointure entre l'id_article et l'id_objet
en l'état elle fonctionne avec {id_objet=40}
en revanche ça ne fonctionne plus avec {id_objet=id_article} ou {id_objet==id_article}

une idée ?
cordialement

Pas sur mais {id_objet=#ID_ARTICLE} risque de fonctionner.

Bonjour,

Voir aussi c'est 2 articles:
http://www.gasteroprod.com/blog/un-exemple-de-jointures-entre-plusieurs-tables-dans-une-boucle-spip.html

Deux tables différentes avec un champ commun:

Bonne journée.

Denis Chenu a écrit :

Le 23/12/2009 11:37, bobof a écrit :

bonjour,
dans cette boucle :

<BOUCLE_alea(ARTICLES){statut=prepa}>
<BOUCLE_doc_alea(DOCUMENTS){id_objet=40}{vu=non}{par hasard}{extension==jpg}{0,1}{doublons}>
background-image: url([(#FICHIER)]);background-repeat:no-repeat;
</BOUCLE_doc_alea>
</BOUCLE_alea>

comment peut-on faire la jointure entre l'id_article et l'id_objet
en l'état elle fonctionne avec {id_objet=40}
en revanche ça ne fonctionne plus avec {id_objet=id_article} ou {id_objet==id_article}

une idée ?
cordialement

Pas sur mais {id_objet=#ID_ARTICLE} risque de fonctionner.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Denis Chenu a écrit :

Pas sur mais {id_objet=#ID_ARTICLE} risque de fonctionner.

oui.
et ajouter {objet = article}
(cas ou id_objet = 40 *et* objet = rubrique...)

bonjour,
merci à vous trois,
mais ça bloque ailleurs, donc les boucles avec une petite rectification :

<BOUCLE_alea(ARTICLES){titre_mot=alea}{statut=prepa}>
<BOUCLE_doc_alea(DOCUMENTS){id_objet=#ID_ARTICLE}{objet=article}{vu=non}{par hasard}{extension==jpg}{0,1}{doublons}>
background-image: url([(#FICHIER)]);background-repeat:no-repeat;
</BOUCLE_doc_alea>
</BOUCLE_alea>

le resultat avec var_mode=debug est ok pour la boucle article :
--------
SELECT articles.id_article, articles.lang
3 FROM spip_articles AS `articles`
4 INNER JOIN spip_mots_articles AS L1 ON ( L1.id_article = articles.id_article )
5 INNER JOIN spip_mots AS L2 ON ( L2.id_mot = L1.id_mot )
6 WHERE (L2.titre = 'alea')
7 AND (articles.statut = 'prepa')
8 GROUP BY articles.id_article
1 sur 1

id_article => 40
lang => fr
------
ça coince avec la boucle documents, la jointure se fait bien mais c'est le statut prepa qui bloque :
------
SELECT rand() AS alea, documents.fichier, documents.id_document
03 FROM spip_documents AS `documents` LEFT JOIN spip_documents_liens AS l
04 ON documents.id_document=l.id_document
05 LEFT JOIN spip_articles AS aa
06 ON (l.id_objet=aa.id_article AND l.objet='article')
07 LEFT JOIN spip_breves AS bb
08 ON (l.id_objet=bb.id_breve AND l.objet='breve')
09 LEFT JOIN spip_rubriques AS rr
10 ON (l.id_objet=rr.id_rubrique AND l.objet='rubrique')
11 LEFT JOIN spip_forum AS ff
12 ON (l.id_objet=ff.id_forum AND l.objet='forum')
13
14 INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document )
15 WHERE ((aa.statut = 'publie') OR bb.statut = 'publie' OR rr.statut = 'publie' OR ff.statut='publie')
16 AND (documents.mode != 'vignette')
17 AND (documents.taille > 0 OR documents.distant='oui')
18 AND (L1.id_objet = 40)
19 AND (L1.objet = 'article')
20 AND (L1.vu = 'non')
21 AND (documents.extension REGEXP 'jpg')
22 GROUP BY documents.id_document,documents.id_document
23 ORDER BY alea
24 LIMIT 0,1
------
peut-on forcer le statut ?
------
15 WHERE ((aa.statut = 'publie')
------
en ((aa.statut = 'prepa')

j'ai essayé dans la boucle documents de placer {statut=prepa} mais ça passe pas, j'ai ce message d'erreur :

Column 'statut' in where clause is ambiguous

cordialement

bobof a écrit :

bonjour,
dans cette boucle :

<BOUCLE_alea(ARTICLES){statut=prepa}>
<BOUCLE_doc_alea(DOCUMENTS){id_objet=40}{vu=non}{par hasard}{extension==jpg}{0,1}{doublons}>
background-image: url([(#FICHIER)]);background-repeat:no-repeat;
</BOUCLE_doc_alea>
</BOUCLE_alea>

comment peut-on faire la jointure entre l'id_article et l'id_objet
en l'état elle fonctionne avec {id_objet=40}
en revanche ça ne fonctionne plus avec {id_objet=id_article} ou {id_objet==id_article}

une idée ?
cordialement

--
Signalez vos spams d'un simple clic. www.signal-spam.fr
<https://www.signal-spam.fr/&gt;

bobof a écrit :

peut-on forcer le statut ?

essayer (pas testé) avec {tout} :
   <BOUCLE_doc_alea(DOCUMENTS){id_objet=#ID_ARTICLE}
                              {objet=article}
                              {tout}
                              {vu=non}
                              {par hasard}
                              {extension=jpg}
                              {0,1}
                              {doublons}>

je supprime aussi la regexp du 'jpg' (passage de == à =)...

bonsoir,
merci denisb,
c’est bien le critère {tout} qui annule la restriction statut=publie sur les documents
le critère {extension==jpg} ou {extension=jpg} ne modifie pas le résultat de la requête,
dans les deux cas ça marche.
cordialement

denisb a écrit :

Pour ma part, le critère {tout} étant (ayany été ?) capricieux, je préfère intégrer un {statut != pantoufle}
:slight_smile:

Joyeux Noël
Simon

bobof a écrit :

On 24/12/2009 02:05, Simon Camerlo wrote:

Pour ma part, le critère {tout} étant (ayany été ?) capricieux, je
préfère intégrer un {statut != pantoufle}
:slight_smile:

Excellent :slight_smile:

Cependant, je vois pas l'intéret de {id_objet=#ID_ARTICLE}{objet=article} qui se remplace aisément par {id_article} tout simplement... Spip en théorie se débrouille comme un grand pour sa requete...

<BOUCLE_doc_alea(DOCUMENTS){id_objet=#ID_ARTICLE}
{objet=article}
{tout}
{vu=non}
{par hasard}
{extension=jpg}
{0,1}
{doublons}>

--
MM.