Boucle syndic_articles proposés

Bonjour,

J'aimerais sortir la liste des articles syndiqués de sites non publiés :

<BOUCLE_references(SITES){statut=prop}{nom_site=references}>
   blabla
   <B_sites>
     <ul>
  <BOUCLE_sites(SYNDIC_ARTICLES){id_syndic}{par hasard}{" | "}>
    <li>#TITRE</li>
  </BOUCLE_sites>
     </ul>
   </B_sites>
</BOUCLE_references>

Debug :

SELECT syndic.id_syndic
FROM deco_syndic AS `syndic`
WHERE (syndic.statut = 'prop')
  AND (syndic.nom_site = 'references')

J'ai bien le blabla qui sort le site /prop/osé à la publication,
mais les articles ne sont pas affichés car la requête prend les sites publiés :

SELECT rand() AS alea, syndic_articles.url, syndic_articles.descriptif, syndic_articles.titre
FROM deco_syndic_articles AS `syndic_articles`
INNER JOIN deco_syndic AS L1
ON ( L1.id_syndic = syndic_articles.id_syndic )
WHERE (L1.statut = 'publie')
  AND (syndic_articles.statut = 'publie')
  AND (syndic_articles.id_syndic = 1)
ORDER BY alea

Comment écrire alors cette boucle ?

Merci

--
Stéphane

Les Voisins Spipeurs : http://www.voisins-spipeurs.net

Bonjour,

Le 16/11/2013 12:15, Stéphane Santon a écrit :

J'aimerais sortir la liste des articles syndiqués de sites en statut proposés :

J'ai essayé d'après Les jointures entre tables - SPIP :

<B_refsites>
   <ul>
<BOUCLE_refsites(SYNDIC_ARTICLES spip_syndic){syndic.statut=prop}>
   <li>#TITRE</li>
</BOUCLE_refsites>
   </ul>
</B_refsites>

Sans succès. Mais le debug donne ceci :

SELECT syndic_articles.titre
FROM deco_syndic_articles AS `syndic_articles`
INNER JOIN deco_syndic AS L1 ON ( L1.id_syndic = syndic_articles.id_syndic )
WHERE (L1.statut = 'publie')
  AND (syndic_articles.statut = 'publie')
  AND (L1.statut = 'prop')

On remarque 2 conditions contradictoires :
(L1.statut = 'publie')
(L1.statut = 'prop')

Donc on se dit que la première est automatique et qu'on pourrait la supprimer par un critère {tout} ?

J'essaie donc
<BOUCLE_refsites(SYNDIC_ARTICLES spip_syndic){tout}{syndic.statut=prop}>

Mais même résultat.

Y aurait-il un bug ou bien une autre solution ?

Merci

--
Stéphane

Les Voisins Spipeurs : http://www.voisins-spipeurs.net

Le 17 nov. 2013 à 14:00, Stéphane Santon <m.spiprezo@team-santonum.com> a écrit :

Bonjour,

Le 16/11/2013 12:15, Stéphane Santon a écrit :

J'aimerais sortir la liste des articles syndiqués de sites en statut proposés :

J'ai essayé d'après Les jointures entre tables - SPIP :

<B_refsites>
<ul>
<BOUCLE_refsites(SYNDIC_ARTICLES spip_syndic){syndic.statut=prop}>

Il ne faudrait pas ajouter le critère {syndic_articles.statut=prop} ?

Et est ce que le critère {tout} sur syndic_articles ne suffirait pas?

<li>#TITRE</li>
</BOUCLE_refsites>
</ul>
</B_refsites>

Sans succès. Mais le debug donne ceci :

SELECT syndic_articles.titre
FROM deco_syndic_articles AS `syndic_articles`
INNER JOIN deco_syndic AS L1 ON ( L1.id_syndic = syndic_articles.id_syndic )
WHERE (L1.statut = 'publie')
   AND (syndic_articles.statut = 'publie')
   AND (L1.statut = 'prop')

On remarque 2 conditions contradictoires :
(L1.statut = 'publie')
(L1.statut = 'prop')

Donc on se dit que la première est automatique et qu'on pourrait la supprimer par un critère {tout} ?

J'essaie donc
<BOUCLE_refsites(SYNDIC_ARTICLES spip_syndic){tout}{syndic.statut=prop}>

Mais même résultat.

Y aurait-il un bug ou bien une autre solution ?

Merci

--
Stéphane

Les Voisins Spipeurs : http://www.voisins-spipeurs.net
_______________________________________________
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

La page {tout} - SPIP montrerait que le critère {tout} ne serait pas implémenté sur la table spip_syndic.

On pourrait utiliser la remarque de fin d'article :

En SPIP 2.0 et en SPIP 2.1 :
Pour faire sauter les dernières restrictions de sélection (“where statut=publie” par exemple) et sélectionner véritablement tous les éléments d’une table, on peut utiliser la notation <BOUCLE_yy(prefixe_table)> où l’on précise en bas de casse le nom exact —préfixe compris— de la table de recherche.
par exemple pour afficher tous les articles quel que soit leur statut (prepa, prop, publie, poubelle, refuse) : <BOUCLE_yy(spip_articles)>

Donc
<BOUCLE_refsites(deco_syndic_articles deco_syndic)>
   <li>#ID_SYNDIC : #TITRE</li>
</BOUCLE_refsites>

est OK, mais j'ai tout, même les publiés. Et

<BOUCLE_refsites(deco_syndic_articles deco_syndic){deco_syndic.statut=prop}>
   <li>#ID_SYNDIC : #TITRE</li>
</BOUCLE_refsites>

donne une erreur de compilation :
Critère inconnu =

Donc je me trouve un peu coincé là...

Le 17/11/2013 14:00, Stéphane Santon a écrit :

J'aimerais sortir la liste des articles syndiqués de sites en statut
proposés :

Donc on se dit que la première est automatique et qu'on pourrait la
supprimer par un critère {tout} ?

J'essaie donc
<BOUCLE_refsites(SYNDIC_ARTICLES spip_syndic){tout}{syndic.statut=prop}>

Y aurait-il un bug ou bien une autre solution ?

--
Stéphane

Les Voisins Spipeurs : http://www.voisins-spipeurs.net

Bonjour,

Bon ben faute de savoir pourquoi spip3 n'implémente pas le filtre {tout} pour les tables syndic et syndic_articles, voici une solution :

la boucle DATA qui évite les 2 conditions antagonistes.

#SET{sql,"SELECT rand() AS alea, syndic_articles.url, syndic_articles.descriptif, syndic_articles.titre FROM spip_syndic_articles AS `syndic_articles` INNER JOIN spip_syndic AS L1 ON ( L1.id_syndic = syndic_articles.id_syndic ) WHERE (L1.statut = 'prop') AND (syndic_articles.statut = 'publie') ORDER BY alea"}
<pre>#GET{sql}</pre>

<BOUCLE_refs(DATA){source sql,#GET{sql}}>
    [(#VALEUR|table_valeur{titre})]
</BOUCLE_refs>

Le 17/11/2013 16:51, Stéphane Santon a écrit :

La page {tout} - SPIP montrerait que le
critère {tout} ne serait pas implémenté sur la table spip_syndic.

On pourrait utiliser la remarque de fin d'article :

En SPIP 2.0 et en SPIP 2.1 :
Pour faire sauter les dernières restrictions de sélection (“where
statut=publie” par exemple) et sélectionner véritablement tous les
éléments d’une table, on peut utiliser la notation
<BOUCLE_yy(prefixe_table)> où l’on précise en bas de casse le nom exact
—préfixe compris— de la table de recherche.
par exemple pour afficher tous les articles quel que soit leur statut
(prepa, prop, publie, poubelle, refuse) : <BOUCLE_yy(spip_articles)>

Donc
<BOUCLE_refsites(deco_syndic_articles deco_syndic)>
   <li>#ID_SYNDIC : #TITRE</li>
</BOUCLE_refsites>

est OK, mais j'ai tout, même les publiés. Et

<BOUCLE_refsites(deco_syndic_articles
deco_syndic){deco_syndic.statut=prop}>
   <li>#ID_SYNDIC : #TITRE</li>
</BOUCLE_refsites>

donne une erreur de compilation :
Critère inconnu =

Donc je me trouve un peu coincé là...

Le 17/11/2013 14:00, Stéphane Santon a écrit :

J'aimerais sortir la liste des articles syndiqués de sites en statut
proposés :

Donc on se dit que la première est automatique et qu'on pourrait la
supprimer par un critère {tout} ?

J'essaie donc
<BOUCLE_refsites(SYNDIC_ARTICLES spip_syndic){tout}{syndic.statut=prop}>

Y aurait-il un bug ou bien une autre solution ?

--
Stéphane

SacAPub : http://www.sac-a-pain-publicitaire.com
Les Voisins Spipeurs : http://www.voisins-spipeurs.net