Toon posts:

[PHP/MYSQL Forum] Laatste bericht bovenaan.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi mensjes,
Ben weer eens aan de slag gegaan met mijn forumpje, maar ik zit momenteel eventjes stuck. Kan iemand mij helpen?

Heb een tabel Messages en een tabel Replies.

Hoe krijg ik het voor elkaar dat de tijd getoond wordt van het laatst geplaatste bericht, ongeacht of het een msg of een reply is? Het probleem nu is, is dat ik een select maakt die niet alleen de titel en tijd ophaalt, maar tevens telt hoeveel replies er zijn. Als ik al nu wil sorten op tijd, krijg ik:

1. De tijd van de laatst geposte reaktie bovenaan, ongeacht de tijd van het laatst geposte bericht... Of:

2. Het laatst geposte bericht bovenaan, maar dat betekend dat bij het plaatsen van een reaktie een bericht waarop nog niet is gereageerd altijd bovenaan blijft.

Iemand tips? *liefaankijk* :D
code:
1
2
3
4
5
6
7
8
9
10
11
12
SELECT tblForumMsg.MsgID, 
     tblForumMsg.MsgTitel, 
     count(tblForumReply.ReplyID) AS replies, 
     MAX(tblForumReply.ReplyDatetime) AS lastpost,
     tblForumUser.UserNickName
FROM tblForumMsg
INNER JOIN tblForumUser ON tblForumMsg.MsgPoster = tblForumUser.UserID
LEFT JOIN tblForumReply ON tblForumMsg.MsgID = tblForumReply.ReplyTo
WHERE MsgBelongsTo=$topic
GROUP BY tblForumMsg.MsgID
ORDER BY lastpost DESC, ReplyID DESC
LIMIT $startfrom,15;

Limit hoef je nu niet op te letten, deze zorgt ervoor dat er maar 15 records worden weergegeven. (MYSQL!)

Alvast bedankt :)

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Wordt lastig.
Je kunt beter de laatste post datum bij je topic bijhouden in een extra veld.

Who is John Galt?


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Je was er bijna:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT tblForumMsg.MsgID, 
     tblForumMsg.MsgTitel, 
     count(tblForumReply.ReplyID) AS replies, 
     greatest(MAX(tblForumReply.ReplyDatetime)
           ,tblForumMsg.MsgDateTime
           ) AS lastpost,
     tblForumUser.UserNickName
FROM tblForumMsg
INNER JOIN tblForumUser ON tblForumMsg.MsgPoster = tblForumUser.UserID
LEFT JOIN tblForumReply ON tblForumMsg.MsgID = tblForumReply.ReplyTo
WHERE MsgBelongsTo=$topic
GROUP BY tblForumMsg.MsgID
ORDER BY lastpost DESC, ReplyID DESC
LIMIT $startfrom,15;

Dit is dus het stukje dat ik heb herschreven:
code:
1
2
3
     greatest(MAX(tblForumReply.ReplyDatetime)
           ,tblForumMsg.MsgDateTime
           ) AS lastpost

Je selecteert dus de grootste (=laatste) van de twee.


De kolomnaam tblForumMsg.MsgDateTime heb ik verzonnen, dus die moet je even vervangen door de juiste naam.

Order by ReplyID lijkt me moeilijk als je daarover telt.

Verwijderd

Topicstarter
Okay, thanx!

Klinkt logisch :0 Wist alleen niet dat er zoiets bestond als greatest!

Ik zit nu op mijn werk en daarna ga ik karten, maar ik laat vannacht nog wel even weten of het gelukt is!

Thanx :o

Verwijderd

Topicstarter
Wow!

Het werkt ook nog :) Ik krijg ineens weer de moed om verder te gaan :)

*hiephoi*

Heel erg bedankt! :)

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

[Arro-mode]
Natuurlijk werkt het!
[/Arro-mode]
Pagina: 1