Aussitôt lu, aussitôt écrit.
Gotcha a écrit:
Il faut que j'ouvre une demande d'évolution peux-être pour pouvoir afficher l'ordre des commentaires à notre convenance ?
Je te propose d'ouvrir une nouvelle discussion en redonnant l'existant (le fonctionnement d'aujourd'hui sur la page concerné) et l'évolution que tu souhaiterais.
Cela permettra d'échanger sur le sujet.
Je ne pense pas que la page commentaire, fonctionne encore comme décrit dans ce post ;-)
Il faut que j'ouvre une demande d'évolution peux-être pour pouvoir afficher l'ordre des commentaires à notre convenance ?
Permettez moi de faire un petit...
Déterrage.
Est-il possible de voir cette solution intégrée à Piwigo via un panneau d'administration par exemple ?
Hey excellent :)
Merci pour l'info, c'est vrais que c'est quand meme plus sympa affiché de la sorte.
Dans le même souci de présentation des commentaires, je voulais que les commentaires pour une images soient présenté du plus vieux au plus récent.
ver 1.4.1 !
remplacer
ligne 192 : ORDER BY date DESC
par
ligne 192 : ORDER BY date ASC
Par contre, lorsque l'on laisse un commentaire sur une image qui fait partie d'une catégorie virtuelle c'est le nom du repertoire de stockage qui est indiqué.
La table COMMENTAIRE n'enregistre pas la référence à la catégorie lorsque l'on laisse un commentaire.
Pour une image faisant partie de plusieurs catégories, je suis persuadé que l'on ne trouvera qu'un seul fil de commentaires.
sylvain a écrit:
Reste plus qu'a attendre une refonte de ce systeme dans la 1.5 que Pierrick a Annoncé sur Mantis ! Bon courage Pierrick ! Et merci a toi ramunt pour la solution
Voilà, topic lancé : [discussion] branche 1.5, commentaires utilisateur.
ramunt a écrit:
Ca y est the solution : en fait tu n'étais pas loin : le rajout d'un champ date en résultat de requête peut permettre d'y faire un tri
Actions :
remplacer le
SELECT DISTINCT(ic.image_id) AS image_id,ic.category_id, uppercats
par
SELECT DISTINCT(ic.image_id) AS image_id,ic.category_id, uppercats, max(c.date) as datetemp
puis remplacer
ORDER BY ic.image_id DESC
par
ORDER BY datetemp DESC
Et voilà le tour est joué !!!!
Ce n'est certainement pas ce qu'il y a de plus propre mais ca marche !!!
Des mois de recherche et enfin la solution :)
Soit grandement remercié ! :)
Si pour toi ce n'est pas satisfaisant ca l'est totalemetn pour moi !
REste plus qu'a attendre une refonte de ce systeme dans la 1.5 que Pierrick a Annoncé sur Mantis ! Bon courage Pierrick ! Et merci a toi ramunt pour la solution
Hé oui j'ai posté la solution 2 minutes plus tôt ;-)
mais il y a certainement une solution plus propre dans ton idée.
Enfin pour ce soir j'en reste là.
à+
suggestions...
SELECT image_id, MAX(date) FROM ... GROUP BY image_id ORDER BY MAX(date) DESC HAVING MAX(date) > date_seuil ;
(pas testé)
Pour chaque image ayant un commentaire récent, tu connais la date du dernier commentaire et les image_id sont retournés dans le bon ordre (si j'ai bien compris ce que tu voulais).
Cela dit, vu que tu indiques que tu as testé les fonctions d'agrégation... je ne suis pas sûr d'aider beaucoup.
Ca y est the solution : en fait tu n'étais pas loin : le rajout d'un champ date en résultat de requête peut permettre d'y faire un tri
Actions :
remplacer le
SELECT DISTINCT(ic.image_id) AS image_id,ic.category_id, uppercats
par
SELECT DISTINCT(ic.image_id) AS image_id,ic.category_id, uppercats, max(c.date) as datetemp
puis remplacer
ORDER BY ic.image_id DESC
par
ORDER BY datetemp DESC
Et voilà le tour est joué !!!!
Ce n'est certainement pas ce qu'il y a de plus propre mais ca marche !!!
En fait il y a une solution temporaire mais pas maintenable
on peut toujours faire une operation d ordonnancement sur le champ date de cette table dans phpmyadmin ....
mais ce n est absolument pas satisfaisant ...
Le rajout d'une colonne date ne changera rien. De plus elle ne serait traitée à aucun moment.
En fait les groupes sont déjà fait par le GROUP BY ic.image_id, (mais aussi distinct (ic.image_id) qui enlève les doublons, ce qui me semble faire être une juste une sécurité en trop)
En mettant directement cette requête dans phpMyAdmin
SELECT DISTINCT (ic.image_id) AS image_id, ic.category_id, uppercats
FROM phpwebgallery_comments AS c, phpwebgallery_image_category AS ic, phpwebgallery_categories AS cat
WHERE c.image_id = ic.image_id
AND ic.category_id = cat.id
GROUP BY ic.image_id
ORDER BY date DESC
On se rend compte que les images ayant des commentaires n'apparaissent qu'une seule fois ... car elle sont REGROUPEES, cette requête sert donc d'abord à repérer les images ayant des commentaires, la recherche des commentaires se faisant après ...
On remarque aussi que le mauvais classement est déjà fait, càd les images ayant les plus anciens commentaires sont déjà à la fin, même si elles ont des commentaires plus récents ....
En fait la commande GROUP BY ne permet de garder qu'un seul champ date, même en utilisant les fonctions d'agrégation max() ou min() sur le champ date, c'est toujours la premiere date rencontree qui est utilisee ...
la je seche ....
Je me pose le même problème que toi ...
Peut etre en rajoutant le champ c.date dans le select et en modifiant la clause order by en conséquence mais je débute en sql et j'ai pas envie de risquer ça sur ma galerie ; )
comment.php
$query = '
SELECT DISTINCT(ic.image_id) AS image_id,ic.category_id, uppercats, c.date
FROM '.COMMENTS_TABLE.' AS c, '.IMAGE_CATEGORY_TABLE.' AS ic
, '.CATEGORIES_TABLE.' AS cat
WHERE c.image_id = ic.image_id
AND ic.category_id = cat.id
AND date >= \''.$maxdate.'\'';
puis
$query.= '
ORDER BY c.date DESC
J'oubliai la version : 1.4