Sur la table ARTICLES j'ai ajouté un champ de date. Ce champ possède une vrai date ou il a la valeur "000-00-00". Et je veux filtrer sur ce champ seulement si un parametre 'madate' est mise dans l'URL :
<BOUCLE1(ARTICLES){madate < #ENV{madate}}>
...
marche bien, lorsque le paramètre est présent.
Mais lorsqu'il n'y a pas de paramètere j'ai besoin que tous les articles s'affiche.
En fait j'aurais besoin de
<BOUCLE1(ARTICLES){madate < #ENV{madate} ?}>
-- mais qui ne marche pas, évidemment.
Est-ce que quelqu'un a une idée comment je devrais essayer de résoudre ce problème ?
Merci à toi et à denisb.
Pourtant cela ne marche pas chez moi.
Par exemple, lorsque #ENV{madate}=1989-01-01
je reçois les articles non seulement qui ont une vraie date avant 1989-01-01, mais aussi tous les autres qui n'ont pas de vraie date et qui ont la valeur par défaut "0000-00-00".
Et comme ça, lorsque je n'ai pas de "madate" dans l'URL je n'aurai pas tous les articles, mais seulement ceux pour qui cette date a été fixée. Il me semble que cela coince soit d'un côté, soit de l'autre.
Alors, après un ou deux testes, il semble que cela marche ! (Il manque juste un crochet fermant dans le premier critère.)
Mais je ne vois pas pourquoi encore. Je vais essayer de comprendre
D'ailleurs, comme il s'agit d'une date de naissance, et je découvre que je peux utiliser le critère {age_xxx} dessus (c'est à dire, si je donne le nom "date_birth" au champ, le critère {age_birth} s'y applique), je vais essayer de convertir ton code pour ce critère. Mon idée c'est d'avoir deux <INPUT> : agemin et agemax pour faire des critères comme :
Si ENV{madate} existe alors tu affectes la valeur 0000-00-00 à la variable montest, ensuite du dit que tu veux toutes les dates inférieures à ENV{madate} et différentes de 0000-00-00
Si ENV{madate} n’existe pas alors tu donne une valeur bidon (ici ‹ toto ›) à montest pour être sur que ENV{madate} sera toujours différente de montest et donc te renvoie toutes les valeurs inférieures à 9999-99-99
Un peu tiré par les cheveux mais si quelqu’un à mieux je suis curieux de voir la soluce
Oui, merci - 5 minutes de calme m'ont permis de comprendre ton astuce.
Un peu tiré par les cheveux mais si quelqu'un à mieux je suis curieux de voir la soluce
Je pense qu'on peut demander aux devs si quelque chose comme
{age > #ENV{agemin} ?} ne pourrait pas être inventé. L'utilité est (je pense) évidente. Mais pour le moment je suis bien reconnaissant de ton idée !
si variable dans l'url,
alors tous les articles antérieurs à date *sauf* date = 0000-00-00
?page=test_boucle&la_date=2009-01-11
SELECT articles.id_article, articles.date, articles.lang
FROM spip_articles AS `articles`
WHERE articles.statut = 'publie'
AND articles.date < '9999-12-31'
AND articles.date < '2009-01-11'
AND articles.date NOT IN ('0000-00-00')
si pas de variable dans l'url,
alors tous les articles *y compris* date = 0000-00-00
?page=test_boucle
SELECT articles.id_article, articles.date, articles.lang
FROM spip_articles AS `articles`
WHERE articles.statut = 'publie'
AND articles.date < '9999-12-31'
AND articles.date < '9999-99-99'
AND articles.date NOT IN ('9999-99-99')
Ainsi, un url avec agemin=21 me donne seulement ceux qui ont au moins 21 ans, en excluant les incertains et un url sans paramètre agemin rend toutes les fiches.