webForumDet fria alternativet

Få ett "trädsystem"

ASP

1 svar · 286 visningar · startad av Mannen

Medlem sedan jan. 2003247 inlägg
Frågan#1

Har haft problem med att skapa ett trädsystem i min meny.
Den ska lista flera undermenyer och även visa de undermenyer som ligger kvar i undermenyn.

Jag har en kod som ser ut så här:

<%
Set RecSet2=Server.CreateObject("ADODB.Recordset")
Set RecSet3=Server.CreateObject("ADODB.Recordset")

'## Här öppnar vi scriptets första RecordSet    
Set RS = Connect.Execute("Select * From tblMenu ORDER By namn")
'## Vi kollar om Recordsetet, menyn är tom, isåfall, skriver vi ut "Tomt"
If RS.EOF Then
  Response.Write "<tr><td>Tomt</td></tr>" 
Else
'## Vi loppar fram menykategorierna
Do Until RS.EOF
Id = RS("ID")
Namn = RS("Namn")

IF CStr(Id)=Request.QueryString("ID") then
%>

<A HREF="meny.asp?ID=""><%=Namn%></a><br>

<%
strSQL="SELECT * FROM tblLevelMenu WHERE refID="& Request.QueryString("ID") &" AND Level="& Request.QueryString("Level")+1 &" ORDER BY Namn"
Set RecSet2=Connect.Execute(strSQL)

Do Until RecSet2.EOF

strSQL="SELECT * FROM tblLevelMenu WHERE refID="& Request.QueryString("ID") &" AND Level="& Request.QueryString("Level")+1 &" ORDER BY Namn"
Set RecSet3=Connect.Execute(strSQL)
if RecSet3.EOF=true then
%>

-<A href="list.asp?kategori=<%=Id%>&subkategori=<%=Request.QueryString("Level")%>"><%=RecSet2("Namn")%></a><br>
<% else %>
-<A href="meny.asp?ID=<%=Id%>&Level=<%=Request.QueryString("Level")+1%>"><%=RecSet2("Namn")%></a><br>
<%end if%>

<%
  RecSet2.MoveNext  
  Loop
ELSE
%>
<A href="meny.asp?ID=<%=Id%>&Level=1"><%=Namn%></a><br>
<%
END IF

  RS.MoveNext  
  Loop
End If%>

Klaga inte på kodningen, inte jag som har gjort hela.

Men problemet är att den inte visar de gamla undermenyerna i undermenyerna.

Så här blir menyn...

Första visningen:

Test1
Test2
Test3

När man klickat på Test3:

Test1
Test2
Test3
-Under3

Men när mansedan klickar på Under3 så försvinner Under3 och då visas bara de understa undermenyerna:

Test1
Test2
Test3
-Under32
-Under32
-Under32

Detta är ett stort problem för mig.

Jag har kollat i gamla trådar och kom fram till denna funktion som jag prövade.

<!-- #Include file="dbcon.asp"-->
<%

Set RS=Server.CreateObject("ADODB.Recordset")

Function printTree(intCatId)

  strSQL = "SELECT * FROM Menu WHERE ParentID="& intCatId &" Order by Namn"
  Set RS = Connect.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("Namn"))&"<br>"

           Call printTree(RS("CategoryID"))

           
      RS.MoveNext
      Loop
      
  end if
End Function

%>

<html>
<head>

<%=printTree(0)%>

<%
RS.Close
Set RS=Nothing
Connect.Close
Set Connect=nothing
%>

Men när jag kör denna får jag att det är för lite minne vid connect.execute

Antar att den loopar alldeles för mycket.

Kommer från denna tråd
http://www.webforum.nu/showthread.php?s=&postid=543816#post543816

Snälla hjälp mig, behöver verkligen få detta att fungera

Medlem sedan aug. 20012 349 inlägg
#2

r) det var inget, för trött, ingnorera mig

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)