Avatar billede ponyboye Nybegynder
03. juni 2004 - 12:14 Der er 23 kommentarer og
1 løsning

Menu til hjælp

jeg har denne menu som kalder en menu ind fra access databse.
I denne database har jeg disse felter som menuen skal bruge:

id, navn, sublink, vente, topmenu, menuposition

id = ja det siger sig selv.

navn = dette er navnet på menuen.

sublink = dette felt er hvis man ønsker at tilføje menuen til andre menuer, som en slags undermenu.

vente = er til hvis menuen ikke ønskes tilføjet lige nu.

topmenu = er hvsi dette menu punkt skal kunne ses i hovede menuen.

menuposition = er til for at kunne vælge hvor i hovedet  menuen navnet skal stå, ved ikke lige hvordan jeg griber det an.

denne kode kalder fint hovede menuerne ud. Nu er det så at jeg gerne vil have kaldt en undermenu ud via sublink.

koden skal så gå ind og se om linket er på vente og derefter udskrive hovedet menuen efter menuposition. Hvis der så klikkes i hovede menuen skal den vise de sublink der er tilføjet under det navn.

men jeg ved ikke lige hvordan jeg griber dette an.

<!--#include virtual="www/db/connection.asp" -->
<%
    strSQL = "Select * From sider Where topmenu = 'top'"
    Set rs = Conn.Execute(strSQL)
   
  while not rs.EOF
 
  strNavn = rs("navn")
  strLink = "<a href='default.asp?id=" & rs("id") & "'>" & strNavn & "</a>"

 
  Response.Write "<li>" & strLink & "</li>"

  rs.MoveNext
wend
  Conn.Close
Set Conn = Nothing

%>
Avatar billede fennec Nybegynder
03. juni 2004 - 12:22 #1
Efter Response.Write "<li>" & strLink & "</li>"

set rs1 = conn.execute("Select * From sider Where sublink="& rs("id"))
do while not rs1.eof
Response.Write "<li> -- <a href='default.asp?id=" & rs1("id") & "'>" & rs1("navn")
& "</a></li>"
loop
Avatar billede fennec Nybegynder
03. juni 2004 - 12:24 #2
glemte lige noget:

if cstr(request.querystring("id")) = cstr(rs("id")) then
  set rs1 = conn.execute("Select * From sider Where sublink="& rs("id"))
  do while not rs1.eof
  Response.Write "<li> -- <a href='default.asp?id=" & rs1("id") & "'>" & rs1("navn")
& "</a></li>"
  loop
end if
Avatar billede ponyboye Nybegynder
03. juni 2004 - 13:13 #3
okay prøver jeg lige
Avatar billede ponyboye Nybegynder
03. juni 2004 - 17:32 #4
er det sådanne det skal se ud?

<!--#include virtual="www/db/connection.asp" -->
<%
    strSQL = "Select * From sider Where topmenu = 'top'"
    Set rs = Conn.Execute(strSQL)
   
  while not rs.EOF
 
  strNavn = rs("navn")
  strLink = "<a href='default.asp?id=" & rs("id") & "'>" & strNavn & "</a>"

 
  Response.Write "<li>" & strLink & "</li>"

  if cstr(request.querystring("id")) = cstr(rs("id")) then
  set rs1 = conn.execute("Select * From sider Where sublink="& rs("id"))
  do while not rs1.eof
  Response.Write "<li> -- <a href='default.asp?id=" & rs1("id") & "'>" & rs1("navn")
& "</a></li>"
  loop
end if

rs.MoveNext
wend
  Conn.Close
Set Conn = Nothing

%>
Avatar billede ponyboye Nybegynder
03. juni 2004 - 17:42 #5
dette virker ikke. den melder en fejl her: & "</a></li>" hvor den skriver ud
Avatar billede fennec Nybegynder
04. juni 2004 - 08:06 #6
har du response.write "...." til at stå på en linje?? Ved ikke hvorfor der er kommet et linjeskift ind.
Avatar billede ponyboye Nybegynder
04. juni 2004 - 10:07 #7
jeg fortår ikke lige det med på en linje?
Avatar billede fennec Nybegynder
04. juni 2004 - 10:13 #8
Response.Write "<li> -- <a href='default.asp?id=" & rs1("id") & "'>" & rs1("navn")& "</a></li>"

Skal stå på en linje. Hvis du har klip/klisteret så er der et linjeskift efter rs1("navn"). Det skal der ikke være.
Avatar billede fennec Nybegynder
04. juni 2004 - 10:14 #9
der skrev den det rigtigt....
Avatar billede ponyboye Nybegynder
04. juni 2004 - 10:23 #10
den der sublink den er jeg næsten nød til at køre med id med at hente ud, da der skal kunne stå flere link i samme felt.

med der vel jo komme til at stå (23 25 29) som de link den skal henvise til.

jeg bruger denne kode nu:

<%
    strSQL = "Select * From sider Where topmenu = 'top'"
    Set rs = Conn.Execute(strSQL)
   
  while not rs.EOF
 
  strNavn = rs("navn")
  strLink = "<a href='default.asp?id=" & rs("id") & "'>" & strNavn & "</a>"

 
  Response.Write "<li>" & strLink & "</li>"

  if cstr(request.querystring("id")) = cstr(rs("id")) then
  set rs1 = conn.execute("Select * From sider Where sublink="& rs("id"))
  do while not rs1.eof
  Response.Write "<li> -- <a href='default.asp?id=" & rsl("id") & "'>" & rsl("navn") & "</a></li>"
  loop
end if

rs.MoveNext
wend
  Conn.Close
Set Conn = Nothing

%>

og der får jeg en fejl i linje 15 som er

den udskriver helt bestemt dette:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/www/db/menu.asp, line 15
Avatar billede fennec Nybegynder
04. juni 2004 - 10:39 #11
Det synes jeg ikke er en god database opbygning, men vi kan godt klare det alligevel :o)

if cstr(request.querystring("id")) = cstr(rs("id")) then
  if trim(rs("sublink")) <> "" then
    tempLink = split(rs("sublink")," ")
    for f=lbound(tempLink) to ubound(tempLink)
      set rs1 = conn.execute("Select * From sider Where id="& tempLink(f))
      if not rs1.eof then
        Response.Write "<li> -- <a href='default.asp?id=" & rsl("id") & "'>" & rsl("navn") & "</a></li>"
      end if
    next
  end if
end if

Men jeg vil anbefale at du laver om på opbygningen. Du skal bare ændre dit sublink fra tekst til tal. Også skal den indeholde parent værdien.

Hvis nu ID 5 havde "23 25 29" til at stå i sublink nu, så skulle id 23, 25 og 29 have 5 til at stå i sublink (parent værdi) efter ombygningen.
Avatar billede ponyboye Nybegynder
04. juni 2004 - 23:55 #12
kan du ikke prøve at uddybe det for det er første gang jeg prøver at lave dette så jeg er åben for gode ider
Avatar billede ponyboye Nybegynder
05. juni 2004 - 01:34 #13
nu fik jeg det til at virke. Men der er noget ved det (parent værdi) jeg syntes er et problem.

Hvis menu1 åbnes og link vises og der efetr trykke på et link som hedder menu3 så hopper den ned og vise link i menu3.

jeg vil gerne have at den bliver ved med at vise menu1 og dens link, men så går ind og viser de link der er i sublink for menu3 når klikkes på den, unden at den lukker sammen og åbner menu3.

på samme måde som nu, bare den ikke hopper sådanne rundt i menuerne.

Kan dette lade sig gøre?
Avatar billede fennec Nybegynder
07. juni 2004 - 08:04 #14
Det kan det godt. Du skal så til at gemme åbne ID'er i en session variabel. I stedet for:

if cstr(request.querystring("id")) = cstr(rs("id")) then

skal du så tjekke om cstr(rs("id")) er i den variabel.
Avatar billede ponyboye Nybegynder
07. juni 2004 - 09:08 #15
er det sådanne noget alle dette:

if cstr(cstr(rs("id")) > then if trim(rs("sublink")) <> "" then
    tempLink = split(rs("sublink")," ")
    for f=lbound(tempLink) to ubound(tempLink)
      set rs1 = conn.execute("Select * From sider Where id="& tempLink(f))
      if not rs1.eof then
        Response.Write "<li> -- <a href='default.asp?id=" & rsl("id") & "'>" & rsl("navn") & "</a></li>"
      end if
    next
  end if
end if
Avatar billede fennec Nybegynder
07. juni 2004 - 09:35 #16
nope.

I toppen af din side skal du gemme/fjerne sideID'et fra en session variabel, som indeholder en liste over alle menu punkter som skal være åbne, så du han en session variabel som ser sådan ud:

session("openMenuIDs") = "5,12,8"

Din udskrivning bliver så sådan:

myTempArr = split(session("openMenuIDs"), ",")
for j=lbound(myTempArr) to ubound(myTempArr)
  if cstr(myTempArr(j)) = cstr(rs("id")) then
    tempLink = split(rs("sublink")," ")
    for f=lbound(tempLink) to ubound(tempLink)
      set rs1 = conn.execute("Select * From sider Where id="& tempLink(f))
      if not rs1.eof then
        Response.Write "<li> -- <a href='default.asp?id=" & rsl("id") & "'>" & rsl("navn") & "</a></li>"
      end if
    next
  end if
next
Avatar billede ponyboye Nybegynder
07. juni 2004 - 09:40 #17
men det er vel ikke noget problem at hente session id ud fra databasen, så når der laves et nyt link finder den selv session id´en?
Avatar billede fennec Nybegynder
07. juni 2004 - 09:43 #18
Det er lige meget hvad der ligger i databasen. Vi skal have gemt de menuId'er, som en bruger har klikket på, så punkterne er åbne.
Avatar billede ponyboye Nybegynder
07. juni 2004 - 09:53 #19
hvorfor så skrive session("openMenuIDs") = "5,12,8" hvad stå 5,12,8 for? er det ikke id på siderne der bliver åbne?
Avatar billede fennec Nybegynder
07. juni 2004 - 09:57 #20
jo, men de skal selvfølgelig genereres dynamisk. Noget i denne stil.

if request.querystring("id") <> "" then
  if session("openMenuIDs") = "" then session("openMenuIDs")=request.querystring("id") else session("openMenuIDs") = session("openMenuIDs") &","& request.querystring("id")
end if

Der skal så også værer noget med at fjerne ID'et istedet, hvis det allerede er på listen.
Avatar billede ponyboye Nybegynder
07. juni 2004 - 10:49 #21
humm det vil jeg lige prøve at lege lidt med og se om jeg kan finde ud af
Avatar billede ponyboye Nybegynder
08. juni 2004 - 20:36 #22
jeg kan ikke få den til at lukke menuen sammen og kun åbne link i det menu punkt der bliver klikket på. men det går nok, må lave med det til jeg finder en løsning. Lægger du et svar..
Avatar billede fennec Nybegynder
09. juni 2004 - 08:15 #23
ok.
Hvis du laver en funktion som fjerner menuId'et fra listen hvis det eksistere, burde den lukke menuen sammen igen.
Avatar billede ponyboye Nybegynder
09. juni 2004 - 08:32 #24
okay det vil jeg prøve
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging