webForumDet fria alternativet

Undermeny

27 svar · 588 visningar · startad av Gimbo · sida 2 av 2

GimboMedlem sedan dec. 20001 626 inlägg
#21

Den där koden va lite skum, korrigerade den lite, men jag förstår inte hur den är tänkt att fungera, och vad datatyperna i access databasen ska se ut, just nu har jag det så här:

tblMenyer
intPK -Räknare
intParentID -Tal
intMenuID - Tal
strNamn - Text
strLink - Text

har matat in testvärden i databasen men det fungerar inte så här ser koden ut:

<% '//Menyn med undermenyer

Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databasen.mdb") 
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open Conn

strSQL = "SELECT DISTINCT intMenuID, strNamn, strLink FROM tblMenyer WHERE intParentID = 0"
Set rsParent = connect.Execute (strSQL)

While Not rsParent.EOF
  Response.Write "<a href="" " &rsParent("strLink")& " & "&rsParent("strName")& " ""</a>"

  If Cint(Request.Querystring("id")) = Cint(rsParent("id")) Then
    strSQL = "SELECT intMenuID, strName, strLink FROM tblMenyer WHERE intParentID = " & intParentID & ";"
    Set rsChild = connect.Execute (strSQL)

    While Not rsChild.EOF
      Reponse.Write "<a href="" " &rsChild("strLink")& " & " &rsChild("strName")& " ""</a>"
    Wend
  End If
Wend
%>

får felmeddelandet:

Microsoft JET Database Engine (0x80040E10)
Det har inte angetts något värde för en eller flera nödvändiga parametrar.

men jag har värden i databasen

Engine^Medlem sedan dec. 20003 887 inlägg
#22

Har du satt alla toppmenyers intParentID till 0?

Sedan såg jag att jag gjort en tabbe också :)

strSQL = "SELECT intMenuID, strName, strLink FROM tblMenyer WHERE intParentID = " & [b]rsParent("intMenuID")[/b] & ";"
Set rsChild = connect.Execute (strSQL)
GimboMedlem sedan dec. 20001 626 inlägg
#23

fungerar fortfarande inte:

<% '//Menyn

Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databasen.mdb") 
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open Conn

strSQL = "SELECT * FROM tblMenyer WHERE intParentID = 0"
Set rsParent = connect.Execute(strSQL)

While Not rsParent.EOF
  Response.Write "<a href=""index.asp?id= " &rsParent("strLink")& " ""> " &rsParent("strName")& " </a>"

  If Cint(Request.Querystring("id")) = Cint(rsParent("id")) Then
    strSQL = "SELECT intMenuID, strName, strLink FROM tblMenyer WHERE intParentID = " & rsParent("intMenuID") & ";"
    Set rsChild = connect.Execute (strSQL)

    While Not rsChild.EOF
      Reponse.Write "<a href="" " &rsChild("strLink")& " "">  " &rsChild("strName")& " </a>"
    Wend
  End If
Wend

%>

pillade lite på response.write, jag tycker inte de ser så speciellt rätt ut, det ska ju se ut på följande sätt index.asp?IntParentId=0&intMenuId=1 eller ngt sånt

eller har jag fel?

Engine^Medlem sedan dec. 20003 887 inlägg
#24

Nja... det beror ju på hur du använder din Querystring. Det jag har föreslagit är egentligen bara en mall, som kräver en del ändringar för att du ska kunna använda den till ditt ändamål.

Huvudmeny1 'strLink = "index.asp?Id=1"
-undermeny1.1 'strLink = "index.asp?Id=1?Page=undermeny1.1.asp"

Länkarna och hur du vill använda dom styr utseendet på din Querystring. Dvs. strLink består i det här exemplet av index.asp + querystring.

GimboMedlem sedan dec. 20001 626 inlägg
#25

ok, men om vi börjar om från början, och skippar det här med strLink, dvs så här vill jag att menyn ska vara uppbyggt, till höger visas adressen på querystringen. Där sida är en speciell sida med speciell innehålloch sektion är en koll som kollar om det finns en undermeny

Meny1 (index.asp?sida=1&sektion=1) <--- visar undermeny ty sektion=1
-meny1.1 (index.asp?sektion=1&pageID=1)
-meny1.2 -meny1.1 (index.asp?sektion=1&pageID=2)
Meny2 (index.asp?sida=2&sektion=2)
..... innehåller ingen under rubirk exempelvis, men eftersom sida=2 ändras innehållet på sidan
Meny3 (index.asp?sida=1&sektion=3) <--- visar innehållet av sida=1 fast har en undermeny ty sektion=3
-meny3.1(index.asp?sektion=3&pageID=6)

osv.

hoppas ni förstår vag jag menar??

Engine^Medlem sedan dec. 20003 887 inlägg
#26

tblMenyer
------------
intPK | intParentID | intMenuID | strName | strLink
---------------------------------------------------
1 | 0 | 1 | Meny1 | sida=1&sektion=1
2 | 0 | 2 | Meny2 | sida=2&sektion=2
3 | 0 | 3 | Meny3 | sida=1&sektion=3
4 | 1 | 1 | Meny1.1 | sektion=1&pageID=1
5 | 1 | 2 | Meny1.2 | sektion=1&pageID=2
6 | 3 | 1 | Meny3.1 | sektion=3&pageID=6
---------------------------------------------------
intPK är förvisso onödig, eftersom en unik nyckel kan bildas genom en kombination av intParentID och intMenuID.

Dim strSQL, rsParent, rsChild, qryID

Set rsParent = Server.CreateObject("ADODB.RecordSet")
Set rsChild = Server.CreateObject("ADODB.RecordSet")

[blue]'Skapa menyer...[/blue]
strSQL = "SELECT intMenuID, strName, strLink FROM tblMenyer WHERE intParentID = 0;"
Set rsParent = connect.Execute (strSQL, , 1)

qryID = Request.QueryString("sektion")

While Not rsParent.EOF
  Response.Write "<a href=""index.asp?" & rsParent("strLink") & """>" & rsParent("strName") & "</a>"

  If qryID = rsParent("intMenuID") Then
    strSQL = "SELECT strName, strLink FROM tblMenyer WHERE intParentID = " & rsParent("intMenuID") & ";"
    Set rsChild = connect.Execute (strSQL, , 1)

    While Not rsChild.EOF
      Response.Write "-<a href=""index.asp?" & rsChild("strLink") & """>" & rsChild("strName") & "</a>"

      rsChild.MoveNext
    Wend
  End If

  rsParent.MoveNext
Wend

[blue]'Visa sidan... vet ej hur du har tänkt göra det
'men kanske något sånt här...[/blue]
If Not IsNull(Request.QueryString("sida")) Then
  Server.Execute("pages.asp?sida=" & Request.QueryString("sida"))
End If

If Not IsNull(Request.QueryString("pageID")) Then
  Server.Execute("pages.asp?pageID=" & Request.QueryString("pageID"))
End If

Fungerar inte det här, så får jag väl ge upp med att försöka få in dig på mitt spår ;)

GimboMedlem sedan dec. 20001 626 inlägg
#27

fick det inte att fungera, men tack för infot och tålamodet ändå :)

Engine^Medlem sedan dec. 20003 887 inlägg
#28

Det var så lite så :)

Jag hoppas bara att du förstog min ide, så kanske du kan ordna till koden så att det fungerar för dig.

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