#get dans un critère

Bonjour,

Je voudrais afficher les articles avec le mot-clé « permanent » et, s’il reste de la place dans ma boucle qui n’affiche que 5 articles, afficher les plus récent.
J’ai donc utilisé le filtre {!doublons}

voici mes boucles :

    #SET{total,5} #SET{nombredarticle, #GET{total}|moins{#TOTAL_BOUCLE}} le résultat est : #GET{nombredarticle}
  • [(#DATE|affdate{'d/m/Y'})]
    #TITRE[

    (#TEXTE|couper{100})

    ] > lire la suite

Ma première boucle me sert à prendre les articles avec le mot clé permanent, je calcul le reste d’article que je peux mettre dans ma dernière boucle.
et je voudrais que ma deuxième boucle est {0, nombredarticle} mais le #GET{nombredarticle} ne marche pas.

Ma question est donc, pouvez-vous me dire comment mettre une variable dans le critère {0,x} s’il vous plait ?

Merci d’avance :slight_smile:

Frink

Le 02/04/2010 12:25, Fortineau Franck a écrit :

Ma question est donc, pouvez-vous me dire comment mettre une variable
dans le critère {0,x} s'il vous plait ?

Essaie avec une parenthèse autour du #GET{sdsdd}
JL

Dsl quand je regarde dans le debug de spip, il ne me prend pas en compte la variable :frowning:

Boucle :
<BOUCLE_autresArticles(ARTICLES){id_rubrique=42}{par date}{inverse}{doublons tril}{0,(#GET{resultat})}>

Résultat :

[2](http://www.cdn-labo.com/dev_test/fov/?var_mode=debug&var_mode_objet=html_d3135576b1e1eae4241edc0e24a2b047_autresArticles&var_mode_affiche=resultat#T13538dd85c2b39f0bc03c203dc506cee) SELECT articles.date, articles.id_article
[3](http://www.cdn-labo.com/dev_test/fov/?var_mode=debug&var_mode_objet=html_d3135576b1e1eae4241edc0e24a2b047_autresArticles&var_mode_affiche=resultat#T13538dd85c2b39f0bc03c203dc506cee) FROM fov_articles AS articles``
[4](http://www.cdn-labo.com/dev_test/fov/?var_mode=debug&var_mode_objet=html_d3135576b1e1eae4241edc0e24a2b047_autresArticles&var_mode_affiche=resultat#T13538dd85c2b39f0bc03c203dc506cee) WHERE (articles.statut = 'publie')
[5](http://www.cdn-labo.com/dev_test/fov/?var_mode=debug&var_mode_objet=html_d3135576b1e1eae4241edc0e24a2b047_autresArticles&var_mode_affiche=resultat#T13538dd85c2b39f0bc03c203dc506cee) AND (articles.date < '9999-12-31')
[6](http://www.cdn-labo.com/dev_test/fov/?var_mode=debug&var_mode_objet=html_d3135576b1e1eae4241edc0e24a2b047_autresArticles&var_mode_affiche=resultat#T13538dd85c2b39f0bc03c203dc506cee) AND (articles.id_rubrique = 42)
[7](http://www.cdn-labo.com/dev_test/fov/?var_mode=debug&var_mode_objet=html_d3135576b1e1eae4241edc0e24a2b047_autresArticles&var_mode_affiche=resultat#T13538dd85c2b39f0bc03c203dc506cee) AND ((articles.id_article NOT IN (33,34,36)))
[8](http://www.cdn-labo.com/dev_test/fov/?var_mode=debug&var_mode_objet=html_d3135576b1e1eae4241edc0e24a2b047_autresArticles&var_mode_affiche=resultat#T13538dd85c2b39f0bc03c203dc506cee) ORDER BY articles.date DESC

1 sur 3

date => 2010-04-02 11:02:16
id_article => 39

2

date => 2010-04-02 11:01:44
id_article => 38

3

date => 2010-04-01 15:52:53
id_article => 35

2010/4/2 JLuc <jluc@no-log.org>

Le 02/04/2010 12:25, Fortineau Franck a écrit :

Ma question est donc, pouvez-vous me dire comment mettre une variable
dans le critère {0,x} s’il vous plait ?

Essaie avec une parenthèse autour du #GET{sdsdd}
JL


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

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

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

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


Franck Fortineau
Les Clefs du Net
8 rue René Coty
85000 La Roche sur Yon

mail : ffortineau@lesclefsdunet.com
Tél : 06 99 85 02 24

Le 02/04/10 14:42, Fortineau Franck a écrit :

Dsl quand je regarde dans le debug de spip, il ne me prend pas en compte la
variable :frowning:

ta première écriture est la bonne (sans les parenthèses)
tu peux d'ailleurs supprimer le {0, 5} de la boucle _articleActu

si le debug ne montre pas le LIMIT, il est bien pris en compte
dans le doublon tril

debug -> BOUCLE_articleActu -> resultat
montre bien
   AND ((articles.id_article IN (v,w,x,y,z))
soit 5 résultats

Le 02/04/10 15:33, denisb a écrit :

debug -> BOUCLE_articleActu -> resultat
montre bien
AND ((articles.id_article IN (v,w,x,y,z))
soit 5 résultats

... et si tu supprimes le {0, #GET{nombredarticle}} de ta
boucle _articleActu, le debug montrera bien une explosion
du IN (..,..,..,..,...)

ceci fonctionne (ici) :

#SET{total,5}

<BOUCLE_articlesPermanent(ARTICLES) {id_rubrique=42} {titre_mot=permanent} {0,5} {doublons tril}>
#SET{nombredarticle, #GET{total}|moins{#TOTAL_BOUCLE}}
</BOUCLE_articlesPermanent>

<BOUCLE_autresArticles(ARTICLES) {id_rubrique=42} {doublons tril} {0,#GET{nombredarticle}} />

<BOUCLE_articleActu(ARTICLES) {id_rubrique=42} {!doublons tril}>
   <li>[(#DATE|affdate{'d/m/Y'})]
   <br />
   <a href="#URL_ARTICLE">#TITRE</a>
   [<p>(#TEXTE|couper{100})</p>]
   <a href="#URL_ARTICLE"> > lire la suite</a>
   </li>
</BOUCLE_articleActu>

Je viens de supprimer le {0,5} de ma boucle _articleActu et en effet cela ne m’affiche que 5 résultats.

J’ai fait mes test et cela marche… mais je comprend pas pourquoi … alors que dans les debug, ma boucle _autresArticles m’affiche 3 résultats …

Je suis content que cela fonctionne et vous remercie, mais je ne comprend pas pourquoi et cela m’agace.

2010/4/2 denisb <denisb@laposte.net>

Le 02/04/10 14:42, Fortineau Franck a écrit :

Dsl quand je regarde dans le debug de spip, il ne me prend pas en compte la
variable :frowning:

ta première écriture est la bonne (sans les parenthèses)
tu peux d’ailleurs supprimer le {0, 5} de la boucle _articleActu

si le debug ne montre pas le LIMIT, il est bien pris en compte
dans le doublon tril

debug → BOUCLE_articleActu → resultat
montre bien
AND ((articles.id_article IN (v,w,x,y,z))
soit 5 résultats


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

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

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

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


Franck Fortineau
Les Clefs du Net
8 rue René Coty
85000 La Roche sur Yon

mail : ffortineau@lesclefsdunet.com
Tél : 06 99 85 02 24

Le 02/04/10 15:47, Fortineau Franck a écrit :

mais je ne comprend
pas pourquoi et cela m'agace.

parce que le #GET fait que la compile de *ce* critère
sous *cette* forme intervient *après* la compile et
le calcul de la requête.

en var_mode=debug, cliquer sur le lien 'code'
de la boucle _autresArticles

on y remarque que :
1- la requête est compilée : "static $connect = ..."
2- la requête est exécutée : "$result = calculer_select..."
3- sur l'ensemble de ces résultats, on ne conserve qu'une partie
    (c'est ici, à ce moment là, que le #GET est évalué : "intval(
    (is_array($a = ($Pile["vars"])) ? $a['nombredarticle'] : "") )"

pour détailler la construction du critère, voir les fonctions :
   calculer_critere_parties()
et
   calculer_critere_parties_aux()
dans
   ecrire/public/criteres.php