Hej! Vad tror du om detta:UL Meny kopplad till databas
    
    
Jag håller på att försöka göra en meny som är uppbyggd av en punktlista och där varje menyval ska hämtas från en databas (access). Jag har letat här på pellesoft och hittat en kodsnutt som jag har modifierat lite och ul listan skrivs ut precis som den ska.
Men nu har jag kommit till problemet att jag vill att underkategorierna endast ska visas när man klickar på en huvudkategori och klickar man på en annan huvudkategori så ska de underkategorier som var öppna stängas och de nya visas osv. den ska med andra ord fungera precis som alla andra "träd menyer", ni förstår säkert hur jag menar.
Är det någon som vet hur man skulle kunna göra detta? det spelar ingen roll om visningen, dvs. öppna/stäng funktionen görs med ASP eller JavaScript, bara de fungerar.
Databasen ser ut enligt följande:
catID | parentID | catName
Så här ser koden ut:
<% 
Function WriteMenu(Connect, Parent)
Dim rsTemp, fldID, fldNamn, fldSubMenus, vID, vText, vSubMenus
  If Parent <> 0 Then
    Set rsTemp = Connect.Execute("Select *, (Select Count(*) From t_categories as SubMenu Where SubMenu.parentID = t_categories.catID) as SubMenus From t_categories Where t_categories.parentID = " & Parent)
  Else
    Set rsTemp = Connect.Execute("Select *, (Select Count(*) From t_categories as SubMenu Where SubMenu.parentID = t_categories.catID) as SubMenus From t_categories Where t_categories.parentID Is Null")
  End If
  
  If Not rsTemp.EOF Then
    Set fldID = rsTemp("catID")
	Set fldNamn = rsTemp("catName")
	Set fldSubMenus = rsTemp("SubMenus")
	  Response.Write vbCrLf &"<ul>"& vbCrLf
	  Do
	    vID = fldID
		vText = fldNamn
		vSubMenus = fldSubMenus
		rsTemp.MoveNext
		Response.Write "<li>"& vText &""
		  If vSubMenus > 0 Then
		    WriteMenu Connect, vID
		  End If
		Response.Write "</li>"& vbCrLf
	  Loop Until rsTemp.EOF
	  Response.Write "</ul>"& vbCrLf
  End if
  rsTemp.Close
End Function
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("menu_db.mdb")
WriteMenu Connect, 0
Connect.Close : Set Connect = Nothing
%>
Vore väldigt tacksam om jag kunde få hjälp med detta.
Tack på förhand
MVH / JohanSv: UL Meny kopplad till databas
    
    
<code>
<SCRIPT>
 function meny(obj) {
  if(obj.style.display=='none'){
   obj.style.display=''
  } else {
   obj.style.display='none'
  }
 } 
</SCRIPT>
<% 
Function WriteMenu(Connect, Parent, niva)
Dim rsTemp, fldID, fldNamn, fldSubMenus, vID, vText, vSubMenus, fldParentID, tmpMeny
  If Parent <> 0 Then
    Set rsTemp = Connect.Execute("Select *, (Select Count(*) From t_categories as SubMenu Where SubMenu.parentID = t_categories.catID) as SubMenus From t_categories Where t_categories.parentID = " & Parent)
  Else
    Set rsTemp = Connect.Execute("Select *, (Select Count(*) From t_categories as SubMenu Where SubMenu.parentID = t_categories.catID) as SubMenus From t_categories Where t_categories.parentID Is Null")
  End If
  If Not rsTemp.EOF Then
    Set fldID = rsTemp("catID")
	Set fldNamn = rsTemp("catName")
	Set fldSubMenus = rsTemp("SubMenus")
	Set fldParentID = rsTemp("parentID")
	  Do
	    vID = fldID
		vText = fldNamn
		vSubMenus = fldSubMenus
		tmpMeny = "m" & fldID & "m" & fldParentID	
		rsTemp.MoveNext
		Response.Write "<span OnClick=""meny(" & tmpMeny & ")"">" 
		For a = 0 to niva
			Response.Write " "
		Next
		Response.Write "+</span>"
		Response.Write vText 
		Response.Write "<br>"
		  If vSubMenus > 0 Then
			Response.write "<span style=""display: none"" id=""" & tmpMeny & """>"
		    WriteMenu Connect, vID, (niva + 1)
		    Response.write "</span id=""" & tmpMeny & """>"
		  End If
	  Loop Until rsTemp.EOF
  End if
  rsTemp.Close
End Function
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("\db\KH.mdb")
Dim lopNummer
lopNummer = 0
WriteMenu Connect, 0, 0
Connect.Close : Set Connect = Nothing
%>
</code>
Har tagit bort listan, efterson den strulade till det med funktionen för att visa och dölja menypunkten.
Ersatte detta med [niva] för att hålla reda på vilken nivå som menyn 'befinner sig på'.
Körde med det enkla <code> </code>, men det går ju fint att byta mot bilder om man vill ha lite trevliga effekter....
Fick också läsa in parentID från databasen för att få till unika ID på menypunkterna.