Håller på att modifiera eforum (som Patrik Olofsson har gjort, grymt forum!) litegrann.
Så här ligger det till:
Just nu så sorteras trådarna på förstasidan efter vilken tråd som skapades senast.
Alltså, sorteras på post_id DESC.
Att det inlägget är det som skapade tråden(och det första inlägget i tråden alltså) illustreras i databasen av att värdet i fältet post_referer är 0.
De inlägg som är svar i den tråden, har i sin tur värdet i post_referer länkat till det första inläggets post_id.
De inlägg som är svar i en tråd i vilken det första inlägget har post_id 30 t.ex, har alltså i sin tur post_referer=30.
På så sätt väljs svaren i en tråd ut när man klickar in sig i tråden.
Det jag vill göra är att ändra så att det på förstasidan sorteras efter vilken tråd som har fått ett inlägg senast, istället för vilken tråd som skapades senast(så som det är i nuläget).
Detta är koden som sorterar förstasidans trådar:
'// SQL-sträng för att hämta de 3 senaste trådarna i aktuell kategori
SQL = "SELECT TOP 3 "&_
"* "&_
"FROM forum_posts "&_
"WHERE post_referer = 0 "&_
"AND post_category = "& cLng(rstCategorys.Fields(0).Value) & " "&_
"ORDER BY post_id DESC;"
Set rstPosts = objCon.Execute(SQL)
'// Loopa trådarna
Do Until rstPosts.Eof
Det jag vill kunna göra (så som jag har fattat det) är alltså att sortera vilket inlägg som har högst post_id där dess post_referer överensstämmer med första inläggets post_id.
Dock så ska ju bara sorteringen påverkas av detta, utskrivningen bör ju vara densamma som innan.
Hoppas ni hajar hur jag menar, det blev lite snurrigt det här :)
Ett enkelt sätt att lösa det här på, som jag själv har gjort, är att lägga till en kolumn i databasen, som heter tex. "last_post_time" el. liknande, där du sparar tid / datum för den senaste posten.
Sen är det bara att sortera efter det, så hmnar allt precis som du vill ha det.
Vid nytt svar:
INSERT INTO tabell (post_id, inlagg, datum) VALUES (0, 'blaha', #2005-02-18 12:33#)
UPDATE tabell SET last_post_time = #2005-02-18 12:33# WHERE post_id = " & svar_id
Och grejen med det är att det är bara det första inlägget i varje tråd som har ett värde i den kolumnen.
De inlägg som är svar har alla 0.
Så oavsett om man vet vilken tid som inlägget är gjort, så kollar den ju bara igenom de inlägg som har startat tråden ändå.
Hmm, tror du tänker fel...?
Du har alltså EN tabell där trådar / svar sparas, svar_id är ett nummer för den tråd som svret tillhör, right?
När ett nytt svar skapas, sätter du in ett datum på "last_post" på den TRÅD som svaret tillhör.
Därav mina två sqlfrågor ovan.
Så, det "senaste" datum ska ju uppdateras på raden där FÖRSTA inlägget finns i databasen, alla svar kommer inte att innehålla "senaste" datum i denna kolumn.