webForumDet fria alternativet

Oändligt antal underkategorier

ASP

31 svar · 1 580 visningar · startad av pirajan · sida 2 av 2

Frågan, av pirajan

Hej! Jag har tidigare skrivit en tråd för detta och frågat, men inte fått något tillräckligt beskrivande svar. Jag har en tabell tblArtiklarKategorier fält: id, idTop, idSub, Namn Där idSub visar vilken kategori den tillhör. idTop är id:t på översta kategorin. Jag undrar alltså hur aka jag göra för att visa det hela som en trädmeny med oändligt med underkategorier?

Läs frågan i sin helhet →
Medlem sedan juni 2000126 inlägg
#21

Okej,

om du vill göra en rekursiv funktion så är det bara att koda ungefär så här:

tabell:

 
CategoryID | Name | ParentID 
1 | Test | 0 
2 | Sub1 | 1 
3 | Sub2 | 2

OBS : Otestad Psedu kod

Function printTree(intCatId)

  strSQL = "SELECT * FROM table WHERE ParentID=" & intCatId & " Order by Name"
  Set RS = Conn.Execute(strSQL)
  
  if RS.EOF then
    'Denna kategori hade inga under kategorier, så därför görs ingenting, och vi hoppar upp ett steg i rekursiviteten
  else
      do while not RS.EOF
           'Skriva ut Namnet, och sedan kallar på denna funktionen för att skiva ut alla under kategorier till innevarande kategori
           Response.write(RS("Name"))
           Call printTree(RS("CategoryID "))
      RS.MOveNext
      Loop
  end if
End Function

Om du sätter ParentID till 0 på alla topkategorier kan du köra printTree(0) så skrivs hela trädet ut.

Hoppas detta löser ditt problem.

/Mvh Jonas

Medlem sedan maj 200010 687 inlägg
#22

clown skrev:

Fördelarna med denna metod är att du inte behöva bygga en rekursiv funktion som bygger upp en sql strän g och skickar in den för varje nivå, vilket tar ganska lång tid.

Det kan man göra även om man har en databas uppbyggnad med id och parentid. T.ex. så kan man göra en databashämtning och bygga ihop det i ett dictionary och sen utgå från dictionariet.

Medlem sedan apr. 2001246 inlägg
#23

Tack!
Nu fungerar det prima!!!
Ni är bäst!!!

Medlem sedan jan. 2003247 inlägg
#24

Väcker denna tråd till liv igen då jag försöker göra samma sak.

Men jag får felmedelande på denna rad då den hämtar igen
Call printTree(RS("CategoryID"))

Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.

Men det finns poster. Databasen ser exakt ut som inlägg nummer #546512 här ovanför

Vad är fel? Är det ett stort misstag? Måste jag göra ngt mer?

Medlem sedan mars 20015 287 inlägg
#25

red. tänker lite mer...

Medlem sedan apr. 2001425 inlägg
#26

Jag använder den rekursiva funktionen med bara en Sql-sats.

Jag hämtar datat med getrows och lopar sedan ut resultatet rekursivt...

mvh :bire

Medlem sedan jan. 2003247 inlägg
#27

Kan du inte förklara för mig, eller iallfall hjälpa mig via email.
Om du är hygglig så får du gärna skicka filen som gör menyn

Medlem sedan apr. 2001425 inlägg
#28

Jag la upp ett komplett script på scriptarkivet, visas så snart moderator accepterar scriptet...

Medlem sedan juli 20003 825 inlägg
#29

Jag har kollat men inte hittat detta skriptet. Vilket är det som avses?

Förmodligen denna:
http://www.webforum.nu/showthread.php?s=&postid=640992#post640992

Medlem sedan apr. 2001425 inlägg
#30

Precis :)

Medlem sedan juli 20003 825 inlägg
#31

D-tree + rekursiv kod

Jag har en följdfråga som även andra kan ha nytta av.

I mitt projekt använder jag ett dynamiskt träd, dtree.

***
Jag vill använda en rekursiv kod för trädet.

Jag undrar lite hur man ändrar ordning på grenarna i trädet på ett enkelt sätt?

Hmmm...! Blir det inte konstig ordning om man inte har nummer som är i följd...??

Jag kan förstå att siffrorna 3, 18, 19, 15 och 56 kommer i en viss ordning, men om man vill byta ordning?

Medlem sedan juli 20003 825 inlägg
#32

Vill bara tillägga för nytillkomna att man inte behöver bry sig om hur D-Tree är uppbyggt eller hur det fungerar. Det fungerar i alla fall!

Denna tråden förklarar tydligare,
http://www.webforum.nu/showthread.php?s=&threadid=112408&forumid=22

Nu är detta ASP men motsvarande fungerar givetvis under PHP eller vilken kod man nu använder.

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