J'ai codé mes propres forums en PHP en utilisant une base de données MySQL. Présentement, sur chaque forum, les sujets sont ordonnés par date de création, et non en fonction de la date du dernier message.
Je vais copier la structure de la table ici, et l'expliquer ensuite :
Code:
CREATE TABLE `forums_sujets` (
`id` mediumint(9) NOT NULL auto_increment,
`sujet` varchar(255) NOT NULL default '',
`par` varchar(255) NOT NULL default '',
`date` varchar(255) NOT NULL default '',
`message` longtext NOT NULL,
`forum` mediumint(9) NOT NULL default '0',
`nbre_vu` mediumint(9) NOT NULL default '0',
`type` int(1) NOT NULL default '0',
`resolu` int(1) NOT NULL default '0',
`verrou` int(1) NOT NULL default '0',
`msg_parent_id` mediumint(9) NOT NULL default '0',
PRIMARY KEY (`id`)
);
Le champ id contient l'id du message, le champs sujet contient le titre. Le champ "par" contient le pseudo de celui qui a posté, le champ "date" contient le timestamp. Le champ "message" contient le texte du post. Le champ "forum" contient l'id du forum auquel le sujet est associé. Nbre_vu, le nombre de fois que le post a été vu. "type" contient 0 si ce n'est pas un post-it, et 1 si c'en est un. "resolu" contient 0 si le sujet n'est pas résolu, 1 s'il l'est. "verrou" contient 0 si le sujet n'est pas verrouillé, 1 s'il l'est.
Le plus important maintenant, le dernier. "msg_parent_id" contient 0 s'il s'agit du premier message d'une discussion (un sujet), et s'il s'agit d'une réponse, il contient l'id du sujet auquel il est associé.
Maintenant, sur un forum, quand je récupère les sujets, je procède avec cette requête :
Code:
SELECT * FROM forums_sujets WHERE msg_parent_id=0 ORDER BY id DESC
J'obtiens donc les sujets ordonnés par date décroissante. J'aimerais les ordonner par dernière réponse. Je me doute avoir besoin des jointures mais je ne connais pas trop et la doc en français sur le site de MySQL est un peu difficile à comprendre...
Alors voilà, si vous désirez de plus amples précisions, faites-moi le savoir
Salut!
Supposant que MySql équivaut à d'autres bases SQL (je connais Ingres et Oracle un peu) je ferai un truc comme ceci :
select id, sujet, par, date, message, forum, nbr_vu, type, resolu, verrou, max(msg_parent_id)
from forum_sujets
order by date desc (par exemple)
En principe ça te donnera les derniers messages par sujet, triés par date décroissante.
Je ne sais pas en revanche si le sujet a pu être modifié en cours de route par les utilisateurs?