Bonjour,
je cherche a faire une boucle permettant d’afficher un seule ligne par jour et par auteur même si ils ont plusieurs articles du même jour :
4/11 Jacques
4/11 Alain
5/11 Jacques
5/11 Jean
J’ai essayé le filtre unique mais du coup ça ne me les affiche plus pour les autres jours. Il doit y avoir une ruse avec doublons mais je ne percute pas
Le 04/11/2016 à 12:34, Solidairnet Chôm'Actif a écrit :
Bonjour,
je cherche a faire une boucle permettant d'afficher un seule ligne par jour et par auteur même si ils ont plusieurs articles du même jour :
4/11 Jacques
4/11 Alain
5/11 Jacques
5/11 Jean
J'ai essayé le filtre unique mais du coup ça ne me les affiche plus pour les autres jours. Il doit y avoir une ruse avec doublons mais je ne percute pas
bonjour,
pas sur d avoir bien compris (qu est ce qu il faut afficher par auteur ?), mais... avec un critere {0,1} et un classement {!par date} ca ne marcherait pas ?
amicalement
triton
"Il est également possible d’utiliser des expressions SQL en paramètre du critère. La boucle suivante affichera la liste des années pour lesquelles il y a au moins un article :
<BOUCLE_annees_avec_articles(ARTICLES){par date}{inverse}{fusion YEAR(date)}>
[(#DATE|annee)]
</BOUCLE_annees_avec_articles>
"
Donc la même avec DAYOFYEAR(date) devrait faire ce que veux pour une année donnée. Si cela doit être valable pour plus de temps, il faudra certainement adapter. Un truc dans le goût par exemple :
<BOUCLE_a(ARTICLES){fusion YEAR(date)}{fusion DAYOFYEAR(date)}{par date}{inverse}{"<br/>"}>
[(#DATE|affdate{Y - M - d})]
</BOUCLE_a>
La question à 100 points restant est par contre "comment faire pour avoir le nombre de lignes groupées pour chaque tour de boucle ?". En sql, ce serait un simple COUNT(*), mais je ne vois pas de critère en spip permettant d'ajouter ça dans les champs de la requête ...
Si quelqu'un a l'info, je suis très preneur !
Merci Triton,
je veux juste afficher la date et le nom de l’auteur (mais une seule fois par jour)
Par exemple la boucle ci-dessous m’affiche bien la date et le nom, mais plusieurs fois si l’auteur a plusieurs articles du même jour.
Le 04/11/2016 à 16:32, Solidairnet Chôm'Actif a écrit :
Brrr ça me pique le yeux mais merci je vais essayer de creuser, cependant est ce que cela ne va pas me regrouper les articles d'auteur différents?
Sans modifications en plus si, ceci dit, cela me paraissait un bon début pour comprendre le critère fusion ^^
Si tu veux pousser le truc, tu peux aussi grouper par id_auteur... Mais ça commence à devenir franchement tordu l'affaire car il faut en plus une jointure :
Ce qui donne sous le capot en SQL , attention aux yeux yeux :
SELECT YEAR(date), DAYOFYEAR(date), L2.date, auteurs.login FROM `basedusite`.spip_auteurs AS `auteurs`
INNER JOIN `basedusite`.spip_auteurs_liens AS L1 ON ( L1.id_auteur = auteurs.id_auteur )
INNER JOIN `basedusite`.spip_articles AS L2 ON ( L2.id_article = L1.id_objet AND L1.objet='article')
WHERE NOT((auteurs.statut = '5poubelle'))
GROUP BY YEAR(date),DAYOFYEAR(date),auteurs.id_auteur
ORDER BY L2.date DESC
De prime abord, j'aurais ajouté {fusion id_auteur} mais la boucle semble ajouter d'elle même le id_auteur en fin de clause group by ...
Donc je ne l'ai pas mis.