CclownMedlem sedan juni 2000126 inlägg 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
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.
pirajanMedlem sedan apr. 2001246 inläggTack!
Nu fungerar det prima!!!
Ni är bäst!!!
MMannenMedlem sedan jan. 2003247 inlägg 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?
MMacceMedlem sedan apr. 2001425 inlägg 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
MMannenMedlem sedan jan. 2003247 inlägg 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
MMacceMedlem sedan apr. 2001425 inlägg Jag la upp ett komplett script på scriptarkivet, visas så snart moderator accepterar scriptet...
EEclipseMedlem sedan juli 20003 825 inlägg 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
EEclipseMedlem sedan juli 20003 825 inlägg 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?
EEclipseMedlem sedan juli 20003 825 inlägg 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.