webForumDet fria alternativet

tråd med senaste inlägget först.

ASP

13 svar · 372 visningar · startad av force

Medlem sedan apr. 200425 inlägg
Frågan#1

Tjena.

Ska försöka förklara så att ni förstår :)

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 :)

Väldigt tacksam för hjälp.

MVH / force

Medlem sedan apr. 200425 inlägg
#2

ingen som har nåt tips att ge ? :)

Medlem sedan feb. 20034 441 inlägg
#3

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

Det funkar jättebra och är lätt att ordna till.

Medlem sedan apr. 200425 inlägg
#4

Aha, okej...men nu upptäckte jag en till grej.

När den sorterar ut för att visa trådarna på förstasidan, så kollar den vilken kategori som respektive tråd ska lägga sig under.

"AND post_category = "& cLng(rstCategorys.Fields(0).Value) & " "&_

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å.

Eller fattar jag fel ? :)

Medlem sedan apr. 200425 inlägg
#5

hm, tror jag håller på att få till det...men hur skriver man för att spara tid/datum...alltså där du har skrivit #datum# ?

Medlem sedan feb. 20034 441 inlägg
#6

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.

Förstår du bättre nu?

Medlem sedan juni 200032 967 inlägg
#7

access?

UPDATE tbl SET datumfältet = now() WHERE villkor
Medlem sedan feb. 20034 441 inlägg
#8

Va snabb du var ;)

"INSERT INTO tabell (datum) VALUES(#" & Date() & "#)"

/red Ahh, aldrig ska man vara först ;)

Medlem sedan juni 200032 967 inlägg
#9

MickeA: varför konkatenerar du in ASP-datum när datumfunktionerna finns att tillgå i SQL?

Medlem sedan feb. 20034 441 inlägg
#10

@nders skrev:

MickeA: varför konkatenerar du in ASP-datum när datumfunktionerna finns att tillgå i SQL?

Hmm, jadu, bra fråga. Misstänkte att det var det ovanstående frågeställare ville ha reda på.

Medlem sedan apr. 200425 inlägg
#11

precis Micke. det förstod jag...exakt så det är uppbyggt

då blir det såhär alltså va ?

'// Uppdatera last_post_time 
SQL	= "UPDATE "&_
	"forum_posts "&_
	"SET last_post_time = now()  "&_
	"WHERE post_id = "& lng_post_id &";"

/edit japp, access...borde kanske sagt det i första posten, sry :)

Medlem sedan apr. 200425 inlägg
#12

Grymt, nu funkar det precis som jag ville!
Dock hände en mystisk grej...nya inlägg i en tråd lägger sig först, inte sist...hmhm.

Medlem sedan apr. 200425 inlägg
#13

fixade det, hade glömt att sortera med order by :)

tack för hjälpen alla!

Medlem sedan feb. 20034 441 inlägg
#14

Om du fått det svar du ville ha får du gärna "Acceptera som slutgiltigt svar" för att underlätta för andra.

;)

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)