Visa = "SELECT * FROM forum WHERE msgUnderId=" & HuvudInlagg
RecSet.Open Visa, Connect, 3, 3
Do While Not RecSet.EOF
<a ref="forum.asp?&Inlagg=<% =RecSet("msgId") %>"><% =RecSet("msgTopic")%></a>
RecSet.MoveNext
Loop
msgUnderId värdet har dess förälder msgID...nån???
Du får först skapa en funktion som hämta inlägget beroende på vilket id du skickar med, och den funktionen så anropar du på samma funktion med "barnens" id, på så sätt kommer det att bli trådat. Men du skall akta dig för att loopa rekursivt (som det heter), det kan lätt loopas till oändlighet om man kodat fel.
Function getMess(id)
'massa kod som hämtar inlägget
'Om det finns "barn" till inlägget så anropar du denna funktionen igen med barnets värde
End Function
------------------ Vide rox = new Vide();
rox.learn("C#"); webeye.nu
Om ni tar en titt på bwsm.cjb.net och forumet där så kan jag beskriva lite kort hur jag gjorde:
Istället för att använda en rekursiv funkion använder jag ReplyOrder och Level.
ReplyOrder anger i vilken ordning svaret ska visas under första inlägget i tråden. Om man svarar på ett inlägg med ReplyOrder = 3 får det nya inlägget ReplyOrder = 4 och alla med ReplyOrder >= 4 får sitt värde ökat med 1.
Level anger hur stort indraget ska vara. Det är inte svårare än att man kontrollerar vilket värde Level har på inlägget man svarar på och sätter det till Level = Level + 1. Indraget gör jag sedan såhär:
Alla svar har ett startID som anger vilken tråd de tillhör. För att sedan lista inläggsträden tog jag råd av min ASP-gud Bill Wilkinsons artikel.
Dock måste hans SQL-sats modifieras en smula för att passa forumet. Annars visas inte inlägg utan svar.
Hans SQL-sats:
Tveksamt om du kan fixa trädstrukturen annars... Kolla Bill Wilkinsons artikel, den jag utgick ifrån. JOIN-satsen krävs som sagt för att visa inlägg utan svar, dvs motsvarande "tomma lag" i artikeln.
Går på lunch nu, så tänk ut lite frågor tills jag kommer tillbaka ;)
Jag har sett trädstruktur med en tabell...så det egentligen borde det vara helt onödigt med två tabeller...vad är syftet...vad är det man kan uppnå med det istället för att använda två tabeller...jag definierar alla huvudinlägg i fältet msgUnderId som 0...och på så sätt borde man kunna köra en tabell...
Men som sagt...jag ser fortfarande inte riktigt hur den sql-satsen du gav skulle kunna skapa en trädstruktur...
"ReplyOrder anger i vilken ordning svaret ska visas under första inlägget i tråden. Om man svarar på ett inlägg med ReplyOrder = 3 får det nya inlägget ReplyOrder = 4 och alla med ReplyOrder >= 4 får sitt värde ökat med 1."
Jag tror jag fått lite aha-upplevelse...kan du bara förklara det med ReplyOrder igen. Förstår inte riktigt det sista du sa "alla med ReplyOrder >= 4 får sitt värde ökat med 1.".
Säg att du har följande inlägg. ro = ReplyOrder, lvl = indrag.
-Hejsan på er (ro = 0, lvl = 0)
-----Re: Hejsan på er (ro = 1, lvl = 1)
-----------Re: Re: Hejsan på er (ro = 2, lvl = 2)
-----Hej på dig med (ro = 3, lvl = 1)
-----Re: Hejsan på er (ro = 4, lvl = 1)
-Första inlägget! (ro = 0, lvl = 0)
Det enda du använder för att bestämma ordningen på svaren är ReplyOrder.
Vad jag menade med öka med 1 där ReplyOrder >= 4: Säg att du svarar på svaret "Hej på dig med" (ro = 3, lvl = 1). Svaret till detta meddelande får ro = 4, lvl = 2. Alla underliggande svar får sin ro ökad med 1, dvs "Re: Hejsan på er" (ro = 4, lvl = 1) får sin ro ökad till 5.