Bonjour,
j'ai un problème avec mon forum. Il est censé afficher les messages par ordre de récence des réponses pour un thème donné.
Le problème est que tous les messages n'ont pas de réponse, donc déjà c'est faussé.
Le but est donc de placer deux priorité dans l'ordre d'affichage :
1) Quand un nouveau sujet est posté, il se place en premier.
2) Quand une réponse est postée pour un sujet, ce sujet repasse en premier.
Là j'ai fait ça :
Ici en fait 'date' est la date du sujet initial et 'dernierSousCom' est la date de la dernière réponse (on a des inclusions de donnée d'une autre table pour éviter les requêtes qui pompent trop de ressources).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT id,contenu,titre, DATE_FORMAT(date,'%d.%m.%Y à %kH%i') AS date, DATE_FORMAT(dernierSousCom,'%d.%m.%Y à %kH%i') AS dernierSousCom,lu FROM commentaire WHERE idDef='".$idDef."' ORDER BY dernierSousCom DESC LIMIT ".$debut.",".$fin."
Problème de cette requête :
Et bien si le champ 'dernierSousCom' est vide parce qu'il n'y a pas eu de réponse, la requête ne sait plus quoi faire et donc l'affichage est complètement désordonné.
Objectif :
Il faudrait faire en sorte que cette requête affiche en premier le dernier sujet ou bien le sujet ayant eu la dernière réponse
Solution que je viens de trouver en écrivant ce message:
J'update le champ "dernierSousCom' avec la date du nouveau sujet en plus d'envoyer celle-ci dans le champ 'date'. Comme ça mon champ dernierSousCom n'est jamais vide et quand une nouvelle réponse est postée il est updaté par la date de celle-ci, et on a bien un affichage cohérent.
C'est bon hein ?
En fait je suis sur que c'est bon, mais je poste quand même dès fois que je me sois planté ou que vous ayez une autre idée.
Partager