Ja håller på med ett enkelt forum.
Min fråga är, hur ska jag göra för att få det att se ut så här när jag ska skriva ut trådarna och svaren.
Altså trådarna ska vara länkar och svaren med. Under trådarna ska respektiva svar för varje tråd lägga sig.
Så vet jag att man gör om man ska få fram trådens svar.
Fast jag ska ju ha en lista med rubriker. Tråden ska vara överst, under den så ska svaren vara. Hur fixar man detta, altså svaren ska vara undra varje tråd.
Tror det heter rekursiv eller något.
Bättre exempel...
En tråd
... Re: En tråd
........Re: Tråd
En till tråd
...Re: En till tråd
.......Re: En till tråd
Det bästa sättet jag vet är att separera trådarna och svaren från varandra i olika tabeller i databasen.
Håller inte med utan tycker det är bland det dummaste man kan göra. Ett inlägg ska sparas på ett ställe vare sig det är början på en ny tråd, eller ett svar.
Tror det heter rekursiv eller något.
Ditt andra exempel var helt annorlunda än ovan och det heter rekursion det du är ute efter. ;)
Vad man psuedokodmässigt gör.
sub checkanswers(parentID)
Print(parentID.HeadLine)
for each child of parentID
checkanswers(childID)
next
end sub
Och den triggas med något liknande
for each new tread
checkanswers(newThreadID)
next
Och mina for each skulle kunna vara en sql-fråga till exempel där man listar alla svar som har parentID av det inlägget man svarade på.
Det bästa sättet jag vet är att separera trådarna och svaren från varandra i olika tabeller i databasen.
Håller inte med utan tycker det är bland det dummaste man kan göra. Ett inlägg ska sparas på ett ställe vare sig det är början på en ny tråd, eller ett svar.
Håller inte med, men det kanske beror på hur forumstrukturen ska presenteras. Ska den presenteras som ett utfällt träd så finns det ju inget som heter "tråd" i dess benärkelse, allt är ju poster kopplade till varandra.
För den vanligaste typen av forum där man väljer först Forum, sedan Tråd för att hamna på en sida med poster så är det många fördelar med att ha en tabell med trådar, speciellt om man ska agregera post count, senaste post, etc så att man kan skära bort dyrbara sekundrar från sql-anropen när besökarna och inläggen växer.
Håller inte med, men det kanske beror på hur forumstrukturen ska presenteras. Ska den presenteras som ett utfällt träd så finns det ju inget som heter "tråd" i dess benärkelse, allt är ju poster kopplade till varandra.
Jag tror vi talade om lite olika saker. Det jag menade var att själva första inlägget skulle finnas i en tabell. Med text, skribentID, tidpunkt osv. Men alla svar skulle finnas i en ny tabell med istort sett samma uppbyggnad plus en koppling till någon post i den första tabellen. Det du menar är snarare som ett index innehållandes huvudrubrik och inte mycket mer. :)
joel_joel88 skrev:
Någon som vet fast inte sett tråden:OO :)
Jag har sett, jag vet och jag har visat.
Vi kan försöka igen med ett exempel. Nu utgår vi från att trådarna ligger i en tabell och alla inlägg i en.
sub checkanswers(parentID,vänsterindrag)
set rs1 = conn.execute("select id, rubrik from inlägg where svartillID = " & parentID)
do until rs1.eof
response.write string(".",vänsterindrag) & rs1("rubrik")
checkanswers(rs1("id"),vänsterindrag + 3)
rs1.movenext
loop
end sub
set rs = conn.execute("select rubrik, id from trådar order by senast_uppdaterad desc")
do until rs.eof
response.write rs("rubrik")
checkanswers(rs("id"),0)
rs.movenext
loop
Går självklart att optimera och köra en del genvägar här och där, men exemplet ska vara intoducerande till rekursionen i problemet.
Du kan ta bort allt vad heter vansterindrag. Det är precis vad det låter som. Om du studerar koden ser du att det värdet ökar ju djupare i rekursionen du trevar. Samt att den skriver ut ett antal punkter vilket är samma antal som variabeln vansterindrag. Du får alltså precis samma struktur och utskrift som i ditt exempel.
Rekommenderar att du försöker fatta begreppet rekursion genom att titta på olika exempel. Hur det fungerar helt enkelt. Då klarnar nog en del.