webForumDet fria alternativet

Loop i loop och expanderbar meny

1 svar · 242 visningar · startad av magnusfeldth

magnusfeldthMedlem sedan jan. 20034 480 inlägg
#1

Jag håller på att göra en meny som hämtar Huvudrubriker och underrubriker från en accessdatabas. Jag vill att dessa loopas ut i stilen:

Huvudrubrik 1
Huvudrubrik 2
-Underrubrik 2.1
-Underrubrik 2.2
Huvudrubrik 3
-Underrubrik 3.1
-Underrubrik 3.1
Huvudrubrik 4
Huvudrubrik 4
Huvudrubrik 4
-Underrubrik 4.1
-Underrubrik 4.2
-Underrubrik 4.3

Jag vill också att underrubrikerna skall gömmas i första skedet, för att expanderas när man klickar på Huvudrubrikerna.

Databasen ser ut så här:
MenyID
Rubrik
Huvudrubrik (=0 om huvudrubrik, siffra som motsvarar huvudrubrikens menyid om underrubrik)
Ordning -vilken ordning de ska visas
Visa - för att kunna stänga av en viss rubrik utan att ta bort den
Länk - den adressen som länken ska leda till, huvudrubriker med underrubriker ska ju som sagt inte göra nåt, de huvudrubriker utan underrubrik ska ha vanlig länk.

Kod för expanderbar meny har jag, en javascript... kan jag använda den på ett enkelt sätt, hur skulle koden se ut?

<script language="JavaScript">

function visadolj1(obj) {

   if(obj.style.display=='none') {
   obj.style.display='block'
   var x = 1
   }
   else {
   obj.style.display='none'
   var x = 2
   }
}

etc...
</script>
----
<div id="huvud" onclick="visadolj1(u1)">
<div id="u1" style="display: none">

Hoppas ni förstår och kan hjälpa mig. :-)

SebbeMedlem sedan jan. 20032 285 inlägg
#2

Är inte helt hundra på hur du vill använda de olika fälten, men detta funkar ungefär som jag tror att du vill i alla fall.

<html>
  <head>
    <script language="JavaScript">
<!--
function visadolj1(obj) {

   if(obj.style.display=='none') {
   obj.style.display='block'
   var x = 1
   }
   else {
   obj.style.display='none'
   var x = 2
   }
}
//-->
    </script>
  </head>
  <body>
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db.mdb")
strSQL = "SELECT * FROM tblRubrik WHERE CBool(Visa) = True AND Huvudrubrik = 0 ORDER BY Ordning"
Set objRS = objConn.Execute(strSQL)

If NOT objRS.EOF Then
  Do Until objRS.EOF
    intCount = intCount + 1

    strSQL = "SELECT * FROM tblRubrik WHERE CBool(Visa) = True AND Huvudrubrik = " & objRS("MenyID") & " AND NOT Huvudrubrik = 0 ORDER BY Rubrik"
    Set objUnderRubrik = objConn.Execute(strSQL)

    If NOT objUnderRubrik.EOF Then
      Do Until objUnderRubrik.EOF
        If intUnderCount = 0 Then
          Response.Write("<div id=""huvud" & intCount & """ onclick=""visadolj1(u" & intCount & ")"">" & objRS("Rubrik") & "</div>" & vbCrLf)
          Response.Write("<div id=""u" & intCount & """ style=""display: none"">" & vbCrLf)
        End If

        Response.Write(" - <a href=""" & objUnderRubrik("Länk") & """>" & objUnderRubrik("Rubrik") & "</a><br>" & vbCrLf)
        objUnderRubrik.MoveNext
        intUnderCount = intUnderCount + 1

        If objUnderRubrik.EOF Then
          Response.Write("</div>" & vbCrLf)
          intUnderCount = 0
        End If
      Loop
    Else
      Response.Write("<a href=""" & objRS("Länk") & """>" & objRS("Rubrik") & "</a><br>")
    End If

    objUnderRubrik.Close : Set objUnderRubrik = Nothing
    objRS.MoveNext
  Loop
End If

objRS.Close : Set objRS = Nothing
objConn.Close : Set objConn = Nothing
%>
  </body>
</html>

"Demo"
Databas

121 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
118 ms — hämta tråd, inlägg och bilagor (db)