Avatar billede jones279 Nybegynder
12. december 2005 - 21:38 Der er 11 kommentarer og
1 løsning

Undermenu går tilbage til menu

Halløjsa,

Mine newbie kundskaber har lavet en mindre menu til et website, men, når man klikker på et punkt som har et underpunkt, så viser den det underpunkt med to   men når man så klikker på et punkt der, så går den tilbage til hovedmenuen - der skal den jo blive i undermenuen, hvis ikke der er undermenuer til undermenuen :)
Men jeg forstår sgu ikke helt hvorfor - any ideas?? Min funktion til det ser således ud:

Function Menu(pg)
    menu_SQL = "SELECT id, parentId, menuNavn FROM Menu WHERE parentId = 0"
    set menu_RS = conn.execute(menu_SQL)
        if NOT menu_RS.eof then
            do while not menu_RS.eof
                response.write "- <a href=""?pg=" & menu_RS("id") & """>" & menu_RS("menuNavn") & "</a><br />"
               
                if CStr(pg) = CStr(menu_RS("id")) then
                    subMenu_SQL = "SELECT id, parentId, menuNavn FROM Menu WHERE parentId = " & pg & " ORDER BY menuNavn"
                    set subMenu_RS = conn.execute(subMenu_SQL)
                    if NOT subMenu_RS.EOF then
                    do while NOT subMenu_RS.eof
                        response.write "&nbsp;&nbsp;- <a href=""?pg=" & subMenu_RS("id") & """>" & subMenu_RS("menuNavn") & "</a><br />"
                    subMenu_RS.movenext
                    loop
                    End if
                    subMenu_RS.Close
                    Set subMenu_RS = Nothing
                end if
               
            menu_RS.movenext
            loop
        end if
           
    menu_RS.Close
    Set menu_RS = Nothing       
End Function
Avatar billede jones279 Nybegynder
12. december 2005 - 22:36 #1
Jeg har lige testet, at den faktisk heller ikke kan klare en undermenu til en undermenu :S Det havde jeg sådan set troet... Såårh, punker lige nogle flere point på, så håber jeg at der er en del vil vise mig det :)
Avatar billede fennec Nybegynder
13. december 2005 - 08:36 #2
Du mangler en isParent() funktion i dit script.

Men jeg vil anbefale at du går over og bruger en rekursiv funktion. Jeg har lavet en som du kan finde her:
http://www.eksperten.dk/spm/664011

Den viser alle menupunkter, men der skal også bare indbygges en isParent() funktion, også fungere den som en foldUdOnClick-menu. Den skal jeg nok lave, hvis du er intreserret i at bruge mit script :o)
Avatar billede jones279 Nybegynder
13. december 2005 - 14:20 #3
Ehh, som sagt... Newbie evner... En rekursiv funktion?
Det der eksempel i spørgsmålet, ser godt nok lidt simplere ud end mit :D

Jeg må indrømme at min kunnen ikke strejker sig meget længere end det jeg har lavet der - har aldrig helt fanget konceptet med funktioner - altså forstår godt det smarte, men fatter ikke helt alle de ting man kan lave i dem :) Så en lille bitte smule mere hjælp, ville jeg sætte stor pris på!

Takker :D
Avatar billede fennec Nybegynder
13. december 2005 - 14:39 #4
Vi kan jo så starte med definationen af en "rekursiv funktion". Det er bare en funktion som kalder sig selv :o)

function doIT(fTal)
  if fTal <= 10 then
    call doIT(fTal+1)
  end if
  response.write fTal &"<br>"
end function
call doIT(1)

funktionen vil udskrive tallene 10 - 1. Hvis du flytter response.write op før if sætningen udskriver den tallene 1 - 10.

Man skal dog passe på med dem, da den kan løbe evigt, hvis man ikke styre dem.

Det var så dagens lektion :o)

Jeg skal nok rette menu koden, så den virker som en foldud, men jeg får nok ikke tid idag. Hvis jeg (eller andre) ikke har givet lyd inden 08:00 i morgen, så smid en kommentar herinde, så jeg får en mail om ?'et. Ellers glemmer jeg det bare :o)
Avatar billede jones279 Nybegynder
15. december 2005 - 18:08 #5
Hopla... Tak for definitionen :) Så lærte jeg også noget nyt - skide smart med at kalde sig selv i funktionen...! Havde jeg sgu ikke lige tænkt på...

Tak for hjælpen :) Håber du gider lave det i min kode, så jeg stadig kan finde rundt i det, hæhæ... Tusind tak :)
Avatar billede jones279 Nybegynder
16. december 2005 - 20:48 #6
Lever du endnu? :)
Avatar billede fennec Nybegynder
19. december 2005 - 08:24 #7
Var desværre ikke hjemme i weekenden, men jeg er gået i gang med det. Skulle være færdig om et lille stykke tid :o)
Avatar billede fennec Nybegynder
19. december 2005 - 08:53 #8
Så er første udkast klar, men jeg har ikke testet det:

'Find sidens ID (skal sendes med som parameter i url'en)
PageID = Request.querystring("pageID")

Function TegnMenu(ThisID,Indrykning)
dim FunkRS

'select rodpunkter eller underpunkter
if ThisID <> "" then
  'Underpunkter
  set FunkRS = conn.Execute("select * from menu where pID="& ThisID)
else
  'Roden af menuen
  set FunkRS = conn.execute("select * from menu where pID is null")
end if

do while not FunkRS.eof
  'tegn menupunktet
  response.write  Indrykning & "<a href=""index.asp?pageID="& FunkRS("ID") &""">"& FunkRS("menu") &"</a><br>"&chr(13)
  'kald funktionen igen for at finde evt underpunkter
  if isParent(FunkRS("ID")) then
    TegnMenu FunkRS("id"),Indrykning&"&nbsp;&nbsp;"
  end if
  FunkRS.MoveNext
loop
End function

function isParent(fID)
dim fORS
  if not (isnumeric(PageID&"") and isnumeric(fID&"")) then
    isParent = false
  else
    if fID&"" = PageID&"" then
      isParent = true
    else
      set fORS = conn.execute("select pID from menu where id="& PageID)
      isParent = isParentSub(fID,fORS("pID"))
    end if
  end if
end function

function isParentSub(fID,fPageID)
dim fORS
  if not isnumeric(fPageID&"") then
    isParentSub = false
  else
    if fID&"" = fPageID&"" then
      isParentSub = true
    else
      set fORS = conn.execute("select pID from menu where id="& fPageID)
      isParentSub = isParentSub(fORS("pID"))
    end if
  end if
end function

Læg mærke til disse to linjer:
PageID = Request.querystring("pageID")
...
  response.write  Indrykning & "<a href=""index.asp?pageID="& FunkRS("ID") &""">"& FunkRS("menu") &"</a><br>"&chr(13)

Det er nu vigtigt at sende sidens ID med på links, så man ved hvilken side man er på.
Avatar billede jones279 Nybegynder
29. december 2005 - 18:53 #9
Hey igen... Jeg har virkelig knoklet med dit eksempel - og kan sgu bare ikke få det til at spille :S

Du tror ikke du kan lave et eksempel ud fra det jeg har lavet? Eller er det helt ude i hampen?
Avatar billede jones279 Nybegynder
29. december 2005 - 18:59 #10
Altså det som mit eksempel ikke kan er følgende: Den kan godt expande en menu og sætte en undermenu ind. Men når man klikker på et underpunkt går den tilbage til hovedmenuen...

Man kan så heller ikke have undermenuer til en undermenu. Men det kan vi måske tage til sidst - det vigtigste er mit første problem :)
Avatar billede fennec Nybegynder
17. januar 2006 - 11:50 #11
Ville lige høre om du selv har fundet ud af noget...

Jeg har være i USA de sidste 3 uger, hvorfor jeg ikke har være aktiv herinde, men nu er jeg tilbage igen.
Avatar billede jones279 Nybegynder
22. november 2007 - 13:21 #12
Luk
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