Avatar billede svjensen Nybegynder
09. marts 2004 - 12:56 Der er 9 kommentarer og
2 løsninger

HJælp til debatforum

Jeg bakser lidt med et debatforum, men kan ikke helt gennemskue hvordan jeg skal håndtere de enkelte indlæg og særligt svar på tidligere indlæg.

Jeg har tre tabeller:
forum: uid, titel, tekst
thread: uid, titel, tekst, forum_id
indlaeg: uid, navn, email, dato, thread_id, parent_id tekst

Min ide er at have flere fora (fx php og asp)
I hvert forum kan der være flere diskussioner (threads) (fx asp->debatforum, asp->funktioner)
I hver diskussion kan der så være et antal indlæg, hvortil der kan svares.
Strukturen med fora og diskussioner virker fint.

Mht. indlæggene så får alle indlæg det respektive thread_id, og et "overordnet" indlæg får parent_id = 0. Min ide er at et svar til et tidligere indlæg får dette indlægs uid som parent, for på den måde at styre sammenhængen.

Her kommer så mit problem.
Når man klikker sig ind i en bestemt diskussion ønsker jeg, at man får en liste med alle overordnede indlæg, og indskudt under disse svar herpå, og eventuelle svar på svarene.
Jeg kan bare ikke lige gennemskue, hvordan jeg kan sikre at jeg får alt med, når jeg ikke ved hvor mange niveauer der er under hvert indlæg.
Avatar billede the_bma_man Nybegynder
09. marts 2004 - 18:25 #1
Lav det som en rekursiv funktion.

Funktion (id)
Denne funktion udskriver sig selv (id)
så laves et select, hvor du finder dem, hvor parent_id = id - vi kalder id her for ny_id
for hver af disse kalder du funktion(ny_id)
Avatar billede svjensen Nybegynder
09. marts 2004 - 20:17 #2
Definer 'rekursiv'

Jeg har selv puslet lidt med tanken om at 'bede' en function om at skrive det, men jeg syntes stadig ikke at jeg helt kan gennemskue, hvordan jeg får mig 'loopet' (eller lignende) igennem alle lag. Der kan principielt være fra 1 til MANGE lag i hver tråd.

Kan du eksemplificere?
Avatar billede kronsj Nybegynder
10. marts 2004 - 12:49 #3
Rekursiv er normalt en løkke-funktion der kører inden i sig selv i "Under-løkker".

her et lille eksempel :

Vi antager :
en gren er en samling knopper.
en knop kan enten være en anden gren eller en frugt.

Vi kalder :

Call frugtplukker(stamme)  'stammen er vel også en slag gren. Logisk set :-)

Sub frugtplukker(ByRef frugtgren as gren)

frugtgren.MovetofirstKnop              'find den første knop (gren eller frugt)
While Not frugtgren.end_of_frugtgren    'indtil enden af grenen
  Select Case frugtgren.knop            'er knoppen en gren eller frugt ?
      Case frugt
        Call plukfrugt                  'knoppen er en frugt. PLUK!
      Case kvist
        Call frugtplukker(frugtgren.knop)
        'knoppen er en gren. start frugtplukkeren ud af denne gren
  End Select
  frugtgren.findnextknop                'find den næste knop
Wend                                    'indtil enden af grenen
   
End Sub

I tilfælde af ASP kan en gren være et recordset og en knop være en record. Det kræver nok lidt justeringer. Men dette er kun ment som beskrivelse og ikke løsning.
Avatar billede svjensen Nybegynder
11. marts 2004 - 08:15 #4
Det lykkedes mig at få det til at fungere. Jeg lægger koden op lidt senere til eventuel inspiration for andre.

Inden jeg giver point, er der lige et par småting jeg skal have justeret først. Det kunne jo være at det afstedkommer et par opfølgningsspørgsmål.
Avatar billede the_bma_man Nybegynder
11. marts 2004 - 20:29 #5
Jamen - du siger da bare til ...
Avatar billede svjensen Nybegynder
12. marts 2004 - 14:34 #6
Der går lige en uges tid inden jeg vender tilbage. Jeg skal et smut til Bruxelles.
Avatar billede the_bma_man Nybegynder
01. april 2004 - 08:39 #7
Er du kommet hjem?
Avatar billede svjensen Nybegynder
01. april 2004 - 21:08 #8
Ja, men så skulle jeg til London ;-)

Som sagt fik jeg det til at virke vha. den rekursive funktion.
Jeg syntes at både the_bma_man og kronsj fortjener point, så hvis kronsj "smider" et svar, så kan I dele.

Tak for hjælpen
Avatar billede the_bma_man Nybegynder
02. april 2004 - 13:04 #9
Det er da godt at høre, at du fik det til at virke!!

God weekend!
Avatar billede svjensen Nybegynder
04. maj 2004 - 09:09 #10
kronsj-> Der er point for at hjælpe mig igang.
Avatar billede svjensen Nybegynder
30. august 2004 - 21:51 #11
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester