Slettet bruger
12. august 2002 - 21:39
Der er
2 kommentarer og 1 løsning
Hjælp til tree menu i ASP, jeg er ved at blive gal!
Hej! Jeg har en fin lille menu med nogle mapper, der normalt laves i hånden, og skrives ind i et JavaScript. Men jeg vil gerne have det fra min database. Den indeholder f.eks. følgende: id serial beskrivelse 1 001 Mappe1 2 002 Mappe2 3 002001 Undermappe1 til mappe2 4 002002 Undermappe2 til mappe2 5 002002001 Undermappe1 til undermappe2 osv, osv... Mappernes niveau bestemmes altså af serial nummeret. Dette vil jeg gerne have automatiseret, så det stilles op på følgende måde: foldersTree = gFld("<b>Produkter</b>", "") mappe1 = insFld(foldersTree, gFld("Mappe1")) mappe2 = insFld(foldersTree, gFld("Mappe2")) undermappe1 = insFld(mappe2, gFld("Undermappe1")) undermappe2 = insFld(mappe2, gFld("Undermappe2")) insDoc(undermappe2, gLnk("S", "Undermappe til undermappe2")) Her er det værd at bemærke at mapper uden undermapper kaldes for insDoc, og mapper med undermapper kaldes for insFld Jeg har forsøgt og forsøgt, men kører sur i det. Nogen der kan hjælpe? Jeg har fundet frem til at man skal ORDER BY serial, trække det hele ud som et array og løbe det igennem. Men.... :(
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
12. august 2002 - 21:42
#1
Jeg kigger lige med, fed ide ellers! :-)
Slettet bruger
12. august 2002 - 22:57
#2
Jeg fandt frem til dette her: <% strQuery = "SELECT COUNT(*) AS antal_poster FROM varegrupper" Set RS = Myconn.Execute(strQuery) i = 0 i2 = 0 antal_poster = Cint(RS("antal_poster")) Dim arr_id() redim preserve arr_id(antal_poster) Dim arr_serial() redim preserve arr_serial(antal_poster) Dim arr_serial2() redim preserve arr_serial2(antal_poster) Dim arr_overskrift() redim preserve arr_overskrift(antal_poster) strQuery = "SELECT * FROM varegrupper ORDER BY serial" Set RS = Myconn.Execute(strQuery) do while not RS.eof arr_id(i) = RS("id") arr_serial(i) = RS("serial") arr_serial2(i2) = RS("serial") arr_overskrift(i) = RS("overskrift") i = i + 1 i2 = i2 + 1 RS.movenext loop Myconn.Execute(strQuery) For i = LBound(arr_id) to UBound(arr_id) array1 = array1 & arr_serial(i)& "," Next For i2 = LBound(arr_id)+1 to UBound(arr_id) array2 = array2 & arr_serial2(i2)& "," Next array2 = array2 & "," array1 = replace(array1,",,","") array2 = replace(array2,",,","") array3 = Split(array1, ",") array4 = Split(array2, ",") response.write "foldersTree = gFld(""<b>Produkter</b>"", """")" & vbCrLf For i = LBound(array3) to UBound(array3) If Len(array3(i)) + 3 = Len(array4(i)) OR Len(array3(i)) = 3 Then response.write "Mappe" & i & " = insFld(foldersTree, gFld("""& arr_overskrift(i) & """, ""url.asp?serial=" & arr_serial(i) & """))" & vbCrLf Else response.write vbTab & "Mappe" & i & " = insDoc(Mappe" & i-1 & ", gFld("""& arr_overskrift(i) & """, ""url.asp?serial=" & arr_serial(i) & """))" & vbCrLf End If Next %> Og det fungerer faktisk fint. Også rimelig kort kode, jeg ser ikke ret meget unødvendig slamkdning (i mine øjne) ;)
Slettet bruger
13. august 2002 - 08:16
#3
Selvfølgelig var det ikke helt så nemt som jeg troede...klokken 3 i nat fik jeg dog fusket dette færdigt, der er eb del grimmere at se på *G* <% strQuery = "SELECT COUNT(*) AS antal_poster FROM varegrupper" Set RS = Myconn.Execute(strQuery) i = 0 i2 = 0 antal_poster = Cint(RS("antal_poster")) Dim arr_udskriv() redim preserve arr_udskriv(antal_poster) Dim arr_udskriv2() redim preserve arr_udskriv2(antal_poster) Dim arr_udskriv3() redim preserve arr_udskriv3(antal_poster) arr_udskriv3(i) = "" Dim arr_id() redim preserve arr_id(antal_poster) Dim arr_serial() redim preserve arr_serial(antal_poster) Dim arr_serial2() redim preserve arr_serial2(antal_poster) Dim arr_overskrift() redim preserve arr_overskrift(antal_poster) strQuery = "SELECT * FROM varegrupper ORDER BY serial" Set RS = Myconn.Execute(strQuery) do while not RS.eof arr_id(i) = RS("id") arr_serial(i) = RS("serial") arr_serial2(i2) = RS("serial") arr_overskrift(i) = RS("overskrift") i = i + 1 i2 = i2 + 1 RS.movenext loop Myconn.Execute(strQuery) For i = LBound(arr_id) to UBound(arr_id) array1 = array1 & arr_serial(i)& "," Next For i2 = LBound(arr_id)+1 to UBound(arr_id) array2 = array2 & arr_serial2(i2)& "," Next array2 = array2 & "," array1 = replace(array1,",,","") array2 = replace(array2,",,","") array3 = Split(array1, ",") array4 = Split(array2, ",") response.write "foldersTree = gFld(""<b>Produkter</b>"", """")" & vbCrLf For i = LBound(array3) to UBound(array3) If Len(array3(i)) = 3 Then temp_var = i arr_udskriv3(i) = arr_serial(i) arr_udskriv2(i) = i+1 arr_udskriv(i) = "Mappe" & i+1 & " = insFld(foldersTree, gFld("""& arr_overskrift(i) & """, ""index.asp?serial=" & arr_serial(i) & "&valg=varegruppe""))" & vbCrLf Else If Len(array3(i)) + 3 = Len(array4(i)) Then temp_var = i 'fjern 3 bagerste tegn fra serial, find det serial som er magen til, og udskriv dettes array nummer. temp_serial = Left(arr_serial(i),Len(arr_serial(i))-3) arr_udskriv3(i) = arr_serial(i) arr_udskriv2(i) = i+1 arr_udskriv(i) = "Mappe" & i+1 & " = insFld(Mappe" & i & ", gFld("""& arr_overskrift(i) & """, ""index.asp?serial=" & arr_serial(i) & "&valg=varegruppe""))" & vbCrLf Else If Len(array3(i-1)) = Len(array4(i-1)) OR Len(array3(i-1)) = 3 Then i3 = temp_var + 1 Else i3 = i End If arr_udskriv3(i) = arr_serial(i) arr_udskriv2(i) = i+1 arr_udskriv(i) = "Mappe" & i+1 & " = insDoc(Mappe" & i3 & ", gFld("""& arr_overskrift(i) & """, ""index.asp?serial=" & arr_serial(i) & "&valg=varegruppe""))" & vbCrLf End If End If Next For n = LBound(arr_udskriv) to UBound(arr_udskriv) If Len(arr_udskriv3(n)) >= 3 Then temp_serial = Left(arr_udskriv3(n),Len(arr_udskriv3(n))-3) For t = LBound(arr_udskriv) to UBound(arr_udskriv)-1 If temp_serial = arr_udskriv3(t) Then replace_var1 = "insDoc(Mappe" & n & "," replace_var2 = "insDoc(Mappe" & t+1 & "," replace_var1 = "insFld(Mappe" & n & "," replace_var2 = "insFld(Mappe" & t+1 & "," arr_udskriv(n) = replace(arr_udskriv(n), replace_var1, replace_var2) End If Next End If response.write arr_udskriv(n) Next %>
Kurser inden for grundlæggende programmering