GimboMedlem sedan dec. 20001 626 inlägg Förmodligen är detta ingen match för er, men jag undrar hur man gör så att en meny ser ut på följande sätt:
meny1
-undermeny1
-undermeny2
meny2
-undermeny
dvsnär man klickar på meny1 så ska undermenyerna listas under, som min kod ser ut nu så listas undermenyerna under den sista huvudmenyn:
<%
'//Menyn
Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database.mdb")
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open Conn
SQL = "SELECT * FROM tblSida "
'response.write SQL
set rs = connect.execute(SQL)
Do until rs.eof
Response.write("<a href=""index.asp?Id="&rs("ID")&""">"&rs("Rubrik")&"</a><br>")
rs.MoveNext
Loop
select case request.querystring("Id")
case 1
response.write "meny 1.1<br>"
response.write "meny 1.2<br>"
response.write "meny 1.3<br>"
response.write "meny 1.4<br>"
case 2
response.write "meny 2.1<br>"
response.write "meny 2.2<br>"
response.write "meny 2.3<br>"
case 3
response.write "meny 3.1<br>"
response.write "meny 3.2<br>"
end select
Connect.Close
'Conn = Nothing
%>
Engine^Medlem sedan dec. 20003 887 inlägg Det blir så, eftersom du skriver ut undermenyen efter loopen.
Do until rs.eof
Response.write("<a href=""index.asp?Id="&rs("ID")&""">"&rs("Rubrik")&"</a><br>")
Select Case Request.QueryString("Id")
Case 1
Response.Write "meny 1.1<br>"
Response.Write "meny 1.2<br>"
Response.Write "meny 1.3<br>"
Response.Write "meny 1.4<br>"
Case 2
Response.Write "meny 2.1<br>"
Response.Write "meny 2.2<br>"
Response.Write "meny 2.3<br>"
Case 3
Response.Write "meny 3.1<br>"
Response.Write "meny 3.2<br>"
End Select
rs.MoveNext
Loop
Jag antar att din tblSida endast innehåller tre stycken undermenyer.
GimboMedlem sedan dec. 20001 626 inlägg Nu blir det så att under varje huvudmeny så hamnar under rubriken under alla huvudmenyer...
dvs.
huvudmeny1
-undermeny1
-undermeny2
huvudmeny2
-undermeny1
-undermeny2
osv.
Engine^Medlem sedan dec. 20003 887 inlägg Hmm... du kanske ska använda Case "1", Case "2" osv.
GimboMedlem sedan dec. 20001 626 inlägg gör jag som du säger och har loopen efter case satsen så gör det ingen effekt såg jag precis, dvs undermenyerna amnar under alla huvudmenyer
Engine^Medlem sedan dec. 20003 887 inlägg Jag förstår ditt problem, men jag har lite svårt att tänka just nu :l
Jag tycker det är en smula konstigt dock. Eftersom du testar med Request.QueryString("Id"), så bör ju endast den undermeny, som är aktuell, komma med.
Select Case Cstr(Request.QueryString("Id")
Case "1"
Response.Write "-undermeny 1.1"
Case "2"
Response.Write "-undermeny 2.1"
Case "3"
Response.Write "-undermeny 3.1"
End Select
solbulleMedlem sedan mars 20015 287 inlägg
Select Case Request.QueryString("Id")
Det är ju en querystring, den har väl inte så mycket med databasen att göra egentligen, eller?
r/ Där hann han... (kan man skriva så?)
GimboMedlem sedan dec. 20001 626 inlägg nope den har ingenting med databasen att göra, men frågan är varför undermenyn inte listas under huvudmenyn??
solbulleMedlem sedan mars 20015 287 inlägg Jag förstår inte problemet, som det är skrivet nu så om tex querystring ID = 2 så kommer det ju för varje loop skrivas ut:
meny 2.1
meny 2.2
meny 2.3
Så ska det alltså inte bli?
Vad är det eg. annars du vill uppnå?
r/ Om det då bara är på meny2:s meny du vill list undermenyn måste du ju ställa ett till villkor i din case-sats, typ:
If request.querystring("id") = recset("id") then
Select case request.querystring("id") 'osv
GimboMedlem sedan dec. 20001 626 inlägg jag vill alltså att det ska se ut på följande sätt:
när jag klickar på meny1 så skall meny1.1, meny1.2 listas under, när jag klickar på meny2 så skall meny2.1m meny 2.2 listas under denna osv.
meny1
meny2
meny3
just nu blir det så att om jag klickar på meny1 så listas meny1.1 under meny1, meny2 och meny3 dvs undermenyn listas under samtliga huvudmenyer, detta för att jag har case satsen i loopen, om jag tar bort den från loopen så kommer undermenyn att hamna under samtliga huvudmenyer dvs på följande sätt:
meny1
meny2
meny3
-meny1.1
-meny1.2
om jag nu klickar på meny1 så ser det ut som ovan. Det jag vill nu är att om jag klickar på meny1 så skall under menyerna dvs meny1.1 och meny1.2 hamna under meny1, och ingen annanstans, helt enkelt en meny med under rubriker osm listas under menyn som vilken trädmeny som helst
aljMedlem sedan sep. 2002538 inlägg Något klumpigt sätt dock;
Response.write("<a href=""index.asp?Id="&rs("ID")&""">"&rs("Rubrik")&"</a><br>")
rs.MoveNext
If Request.Querystring("Id") = "1" Then
Response.Write "meny 1.1<br>"
Response.Write "meny 1.2<br>"
Response.Write "meny 1.3<br>"
Response.Write "meny 1.4<br>"
End If
Response.write("<a href=""index.asp?Id="&rs("ID")&""">"&rs("Rubrik")&"</a><br>")
rs.MoveNext
If Request.QueryString("Id") = "2" Then
Response.Write "meny 2.1<br>"
Response.Write "meny 2.2<br>"
Response.Write "meny 2.3<br>"
End If
Response.write("<a href=""index.asp?Id="&rs("ID")&""">"&rs("Rubrik")&"</a><br>")
rs.MoveNext
If Request.Querystring("Id") = "3"
Response.Write "meny 3.1<br>"
Response.Write "meny 3.2<br>"
End If
r)Såg solbulles mycket vackrare sätt att utföra detta på nu :)
solbulleMedlem sedan mars 20015 287 inlägg Fungerar inte min fullösning då?
Do until rs.eof
Response.write("<a href=""index.asp?Id="&rs("ID")&""">"&rs("Rubrik")&"</a><br>")
If request.querystring("id") = recset("id") then
Select Case Request.QueryString("Id")
Case 1
Response.Write "meny 1.1<br>"
Response.Write "meny 1.2<br>"
Response.Write "meny 1.3<br>"
Response.Write "meny 1.4<br>"
Case 2
Response.Write "meny 2.1<br>"
Response.Write "meny 2.2<br>"
Response.Write "meny 2.3<br>"
Case 3
Response.Write "meny 3.1<br>"
Response.Write "meny 3.2<br>"
End Select
End If
rs.MoveNext
Loop
solbulleMedlem sedan mars 20015 287 inlägg alj: Det lär inte fungera med movenext mellan If-satserna så där.
GimboMedlem sedan dec. 20001 626 inlägg det fungerar inte, jag får ingenting nu, dvs inget skrivs ut under menyn då jag klickar på en huvudmeny
solbulleMedlem sedan mars 20015 287 inlägg Jag skrev iofs fel, recset("id"), men det såg du nog. Testa konvertera, typ:
If cint(request.querystring("id")) = cint(rs("id")) then
eller vad det nu är för typer, tal/text.
Linknde i din select case
GimboMedlem sedan dec. 20001 626 inlägg du e grym solbulle, efter konverteringen fungerade det, men vad gjorde den där konverteringen, vad betyder cint??? vad konv. du från och till?
GimboMedlem sedan dec. 20001 626 inlägg jag har stött på ett till problem nu när det gäller att kppla dessa under menyer, dvs att de blir en länk som ser ut på följande vis:
index.asp?Id=3&undermeny=3
dvs jag vill att då man väljer huvudmeny 3 så ska dess undermenyer listas under och när man klickar på dessa så ska de visas på huvudsidan, vet ni hur det ska se ut i databasen?
just nu har jag endast detta i databasen:
tblsida
-ID (primärnyckel)
-rubrik (text)
-Innehall(PM)
och så här ser koden ut:
SQL = "SELECT * FROM tblSida "
'response.write SQL
set rs = connect.execute(SQL)
Do until rs.eof
Response.write("<a href=""index.asp?Id="&rs("ID")&""">"&rs("Rubrik")&"</a><br>")
'response.write " "& rs("Id")& " "
If cint(request.querystring("id")) = cint(rs("id")) then
select case request.querystring("Id")
case 1
response.write "meny 1.1<br>"
response.write "meny 1.2<br>"
response.write "meny 1.3<br>"
response.write "meny 1.4<br>"
case "2"
response.write "meny 2.1<br>"
response.write "meny 2.2<br>"
response.write "meny 2.3<br>"
case "3"
response.write "meny 3.1<br>"
response.write "meny 3.2<br>"
end select
end if
rs.MoveNext
Loop
istället för dessa response.write och sedan texten, så vill jag att den hämtar länken från databasen. likt huvudmenyen, men nu även med undermeny.
och hur ska jag göra för att visa innehållet i denna undermeny på websidan index.asp för just nu ser det ut så här för att visa innehållet av en huvudmeny, men jag vill ju även kunna visa innehållet av en undermeny:
<% If request.querystring("Id") then
-----anslutningen till databasen här--------
SQL= "SELECT * FROM tblSida WHERE Id = "&Request.Querystring("id")&" "
set rs = connect.execute (SQL)
Response.write " <b>"& rs("Rubrik") &"</b> <br> " &rs("innehall")&" "
'set rs = connect.execute (SQL)
end if
'Connect.Close
%>
Måste jag skapa en till tabell i databasen lr hur ska jag göra?
solbulleMedlem sedan mars 20015 287 inlägg Hur vet du vilka undermenyer som hör till vilken huvudmeny?
GimboMedlem sedan dec. 20001 626 inlägg det e det jag inte vet, jag undrar hur man ska göra detta?? om man ska skapa en ny tabell för alla undermenyer och ge de ett id var... neh jag vat inte det står still i mitt huvud.
Engine^Medlem sedan dec. 20003 887 inlägg tblMenyer
-------------
intPK -Autonumber -PK
intParentID -Integer -DefaultValue:0 'Om tabellen är en undermeny måste den ha en parent
intMenuID -Integer 'Menyns eget ID
strNamn -String 'Menytitel
strLink -String 'Querystring...
<%
strSQL = "SELECT DISTINCT intMenuID, strNamn, strLink FROM tblMenyer WHERE intParentID = 0;"
Set rsParent = [i]connection[/i].Execute (strSQL, , 1)
While Not rsParent.EOF
Response.Write "<a href='%>rsParent("strLink")<%'><%rsParent("strName")%></a>"
If Cint(Request.Querystring("id")) = Cint(rs("id")) Then
strSQL = "SELECT intMenuID, strName, strLink FROM tblMenyer WHERE intParentID = " & intParentID) & ";"
Set rsChild = [i]connection[/i].Execute (strSQL, , 1)
While Not rsChild.EOF
Reponse.Write "<a href=<%=rsChild("strLink")%>><%=rsChild("strName")%></a>"
Wend
End If
Wend
%>
Ovan är inte testad utan jag har just skrivit funktionen, men jag tycker det ser om som om det ska fungera ;)
Det är förvisso bara en ide om hur du kan lägga upp menyer och fungerar för tillfället bara om du har högst en undermeny. Vill du ha flera nivåer måste du gör själva utskriften av undermenyer rekursiv.
Har du många menyer, så är nog det här tillvägagångssättet att föredra.