Jag har suttit och funderat ett bra tag nu på hur ett trådat forum ska vara uppbyggt både kodmässigt och hur databasen ska se ut för att få den att visa trådarna i korrekt ordning och för att uppnå trädstruktur. Har ni något förslag på hur man skulle kunna göra? Går allt att göra med hjälp av ett databasanrop eller? Tack på förhand. Låt varje inlägg ha msgID och replyID. msgID ska vara unikt för varje meddelande. replyID är det msgID som meddelandet är svar på.Trådat forum i ASP
Sv: Trådat forum i ASP
Säg att vi har tre inlägg, med msgID 1, 2 och 3. Svarar man på inlägg två skapas ett nytt inlägg som då kanske får msgID 4, men den får samtidigt replyID 2 eftersom den är ett svar på inlägget med msgID 2.
Det är själva grunden. Har du så kan du sedan rita upp det i princip hur du vill.
För att sen få en trädstruktur på det hela vet jag inte om man kan använda databasen, för när jag gjorde ett forum för ett halvår sen gick det snabbare för mig att lösa det i skriptet istället, så jag gjorde det.
Jag läste då in resultatet från databasen i två arrayer. En med msgID och replyID och en med msgID och övrig information (subject, från, till, datum).
Eftersom det rör sig om trädstrukturer är ju en rekursiv funktion väldigt lämplig. Så man börjar stega igenom msg/reply-arrayen tills man hittar ett msgID där replyID:t är noll, för då är ju inte det något svar, utan det ska vara högst upp.
Man skickar det msgID:t till den rekursiva funktionen som skriver ut inlägget på skärmen och sedan söker i msg/reply-arrayen efter ett inlägg som är ett svar på det aktuella (alltså ett där replyID:t är lika med msgID:t som den håller på med). När den hittar ett anropar den sig själv för att skriva ut det på skärmen och för att kolla om det finns några svar på det svaret. Finns det anropar den sig själv igen för att skriva ut det och fortsätta leta svar. Så fort det inte finns några fler svar slutar funktionen att anropa sig själv och returnerar istället så den kommer tillbaka till den som anropade, dvs den går ett steg tillbaka i trädet och fortsätter där att kolla efter fler svar på det då aktuella inlägget. När den inte hittar fler inlägg returnerar, osv. Till slut är den tillbaka vid det första anropet, och då är den klar och har skrivit ut hela trädstrukturen för det första inlägget.
Om du inte hållt på med rekursiva funktioner tidigare kan det här låta lite invecklat, men rekursiva funktioner är faktiskt helmysiga när man lär känna dem :-)
(En rekursiv funktion är alltså en som anropar sig själv.)