J'aime faire un teaser de forum pour mon site Web. Il est facile de montrer juste les derniers messages ou discussions. J'aime obtenir les derniers sujets et messages dans la même requête, classés par la dernière activité. Donc, il va être ordonné par la date REPLY TO POST, et la date de publication dans la même requête. Je pense qu'il a un peu à faire avec la façon dont vous le GROUPER, mais je ne suis pas sûr.PHP MYSQL Forum teaser, comment?
Tableaux
fils
id, header, text, date, author
messages
id, text, date, author, thread_id
Exemple d'utilisation
20 minutes ago - Comment faire un php/script mysql (2)
17 minutes ago - Pls me aider ici (0)
il y a 1 heure - je besoin d'aide avec PHP (1)
Comme vous le voyez, les deux threads répondus et les nouveaux threads sont dans la liste. (J'ai besoin d'une date de la dernière réponse ou quand il a été créé, en-tête et un nombre() de replys)
J'espère que vous obtenez, et je sais comment faire.
Troels
MISE À JOUR:
J'ai cela, et son accord, mais je ne reçois que les discussions avec replys.
SELECT
threads.*,
posts.*,
(SELECT date FROM posts WHERE thread_id = threads.id ORDER BY date DESC LIMIT 0,1) AS postdate,
(SELECT count(id) FROM threads WHERE thread_id = thread.id) AS replys
FROM
threads,
posts
WHERE
threads.id = posts.thread_id
GROUP BY
thread_id
ORDER BY
postdate DESC,
thread.date
LIMIT
0,15
COMMENT PUIS-JE FAIRE?
MISE À JOUR
aaaaaaaaaaaaaaaaawwwww Ouais !!!!
J'ai réussi à le faire moi-même :-) Ça a pris du temps pour bien faire les choses.
SELECT
fisk_debat.id,
fisk_debat.dato,
IF((SELECT count(id) FROM fisk_debat_svar WHERE debatid = fisk_debat.id) < 1, fisk_debat.dato, (SELECT dato FROM fisk_debat_svar WHERE debatid = fisk_debat.id ORDER BY dato DESC LIMIT 0,1)) AS svardato,
fisk_debat.overskrift,
(
SELECT count(fisk_debat_svar.debatid)
FROM fisk_debat_svar
WHERE fisk_debat_svar.debatid = fisk_debat.id
) AS svar
FROM fisk_debat
GROUP BY id
UNION
SELECT
fisk_debat_svar.debatid AS id,
max(fisk_debat_svar.dato) AS dato,
max(fisk_debat_svar.dato) AS svardato,
(
SELECT fisk_debat.overskrift
FROM fisk_debat
WHERE fisk_debat.id = fisk_debat_svar.debatid
) AS overskrift,
(
SELECT count(fisk_debat_svar.debatid)
FROM fisk_debat_svar
WHERE fisk_debat_svar.debatid = id
) AS svar
FROM fisk_debat_svar
WHERE id != id
GROUP BY id
ORDER BY svardato DESC, dato DESC
LIMIT 0,15
Avez-vous développé le logiciel forum vous? La structure de la base de données semble défectueuse, la «publication d'origine» dans un thread doit également figurer dans la table ** posts **. Cela rendra également votre requête plus facile. – Stijn
Salut.Oui, je l'ai développé moi-même. Et les messages originaux devraient être là pour. – Holsteinkaa
Sans vérifier votre requête entière, vous avez une faute de frappe sur la 4ème ligne. ** (SELECT date ** devrait être ** (SELECT date ** – Stijn