Date comme critère de boucle

Bonjour, après de nombreux cheveux en moins et un gros mal de tête, je viens ici humblement avouer que je suis toujours absolument nul lorsqu'il s'agit d'effectuer des calculs dans spip, et encore plus sur les dates ... Je cherche dans les filtres, mais suis totalement perdu, hélas, alors, voilà mon souci (j'ai cherché et cherché et re-cherché dans la galaxie spip, en vain ...).

J'ai une boucle sur plusieurs tables, qui marche très très bien :

<BOUCLE_comite(MEMBRE_ROLE membre fonction entite){id_entite=1}{debut=#DATE{annee}}>

Seulement voilà, si, dans l'année, on est dans un mois avant juin (mois < 6), je veux mettre en critère #DATE{annee} -1, sinon, je mets l'année (cad 2007, puisque nous sommes en décembre).

J'ai essayé ceci (qui ne veux pas marcher) :
[(#DATE|mois|>{6}|?{
  #SET{ann,#DATE{annee}}
  ,
  #SET{ann,#EVAL{#DATE{annee}-1}}
})]

Déjà, le test ci-dessus plante toute la page ... et puis, impossible de toute façon de mettre #GET{ann} dans le critère {debut= ...}

Bon, alors, j'ai fait :
[(#DATE|mois|>{6}|?{
  <? $an= date('Y'); ?>
  ,
  <? $an= date('Y')-1; ?>
  
})]

Et ça ça marche, sauf que, ensuite, passer {debut=<? echo $an; ?>} le critère ne fonctionne pas plus ...

En conclusion - provisoire j'espère - je suis bloqué ... et j'avoue à nouveau que, dès qu'il s'agit d'effectuer ce genre de test/calcul avec spip, je suis ab-so-lu-ment largué !!

Une bonne âme (c'est noël !!) pourrait-elle m'aider ?

Merci d'avance, et bonnes fêtes à tous ...
----
Marc

Marc VALLETEAU de MOULLIAC a écrit :

Seulement voilà, si, dans l'année, on est dans un mois avant juin (mois < 6), je veux mettre en critère #DATE{annee} -1, sinon, je mets l'année (cad 2007, puisque nous sommes en décembre).

J'ai essayé ceci (qui ne veux pas marcher) :
[(#DATE|mois|>{6}|?{
  #SET{ann,#DATE{annee}}
  ,
  #SET{ann,#EVAL{#DATE{annee}-1}}
})]

Déjà, le test ci-dessus plante toute la page ...

Oui, c'est normal car il faut ajouter des [()] cependant,il y a une solution plus élégante (façon de parler, les [()] ne sont pas très chouettes !) :

[(#SET{ann,[(#DATE|mois|>{6}|?{[(#DATE{annee})],[(#DATE{annee}|moins{1})]})]})]

puis {debut=#GET{ann}} qui devrait passer, y a pas de raison !

MM.

Merci mille fois, Matthieu, effectivement, ça a l'air bien plus propre !! et en plus, ça marche !!

J'ai encore cherché un peu, car, en effet, #GET{ann} ne marchait pas, et c'est normal, car voilà ce que ça renvoie :

2007-12-22 18:40:41, donc, ce critère est un peu dur-dur à passer dans une requête sql !!

J'ai donc fait ceci : {debut=(#GET{ann}|annee)} et, avec ça, nicket !!

Encore mille mercis, non seulement, ça résoud mon pb, mais encore j'ai appris des choses !!

Bon Noël à toi et à tous les spipiens ...

a+
----
Marc

Le 22 déc. 07 à 16:28, Matthieu Marcillaud a écrit :

Marc VALLETEAU de MOULLIAC a écrit :

Seulement voilà, si, dans l'année, on est dans un mois avant juin
(mois < 6), je veux mettre en critère #DATE{annee} -1, sinon, je mets
l'année (cad 2007, puisque nous sommes en décembre).

J'ai essayé ceci (qui ne veux pas marcher) :
[(#DATE|mois|>{6}|?{
  #SET{ann,#DATE{annee}}
  ,
  #SET{ann,#EVAL{#DATE{annee}-1}}
})]

Déjà, le test ci-dessus plante toute la page ...

Oui, c'est normal car il faut ajouter des [()] cependant,il y a une
solution plus élégante (façon de parler, les [()] ne sont pas très
chouettes !) :

[(#SET{ann,[(#DATE|mois|>{6}|?{[(#DATE{annee})],[(#DATE{annee}|moins{1})]})]})]

puis {debut=#GET{ann}} qui devrait passer, y a pas de raison !

MM.

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP