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.