Avatar billede Slettet bruger
04. februar 2005 - 16:03 Der er 10 kommentarer og
1 løsning

Dynamisk menu med getrows()

Hej,

Jeg har to db tabeller (hovedmenu, undermenu) hvor menu_id indgår som fremmednøgle i undermenu. Jeg vil så hente data fra tabellerne ved at lave et 2D array ála det her http://www.asp101.com/samples/db_getrows.asp

Er der nogen der kan tilpasse det, så det, der udskrives er

<div>Første hovedmenupunkt</div>
<a href="default.asp?hovedmenu=1&undermenu=1">første undermenu</a><br />
<a href="default.asp?hovedmenu=1&undermenu=2">andet undermenu</a><br />
<a href="default.asp?hovedmenu=1&undermenu=3">tredje undermenu</a><br />

<div>Andet hovedmenupunkt</div>
<a href="default.asp?hovedmenu=2&undermenu=1">første undermenu</a><br />

etc...

På forhånd tak
Avatar billede eagleeye Praktikant
04. februar 2005 - 16:57 #1
Om du bruger getRows eller ej betyder vil ikke så meget?

Du skal havde lavet noget kode som kan huske hvilken hovedmenu den er kommet til samt lavet SQL sætningen sådan den henter det mener ud i rækkefølge:
SQL = "select * from
Avatar billede Slettet bruger
04. februar 2005 - 16:59 #2
i udgangspunktet ville jeg lave ét loop der henter hovedmenupunkterne og i det loop lave en query på undermenuerne WHERE menu_id = i for det yderste loop, men jeg lurede på om det ikke kunne gøres mere elegant..
Avatar billede eagleeye Praktikant
04. februar 2005 - 17:03 #3
Ja man kan lave en JOIN imellem de to tabeller eks på det:

SQL = "select hovedmenu.id, hovedmenu.hnavn, undermenu.uid, undermenu.unavn from hovedmenu inner join undermenu on hovedmenu.id=undermenu.menu_id order by hovedmenu.id, undermenu.uid"


eks på kode som husker menuen
oldmenu=""
do while not rs.EOF
  if Cstr(oldmenu) <> Cstr(rs("id")) then
    response.write "<div>" & rs("hnavn") & "</div>"
    oldmenu=rs("id")
  end if
  response.write "<a href=""default.asphovedmenu=" & rs("id") & "&undermenu=" & rs("uid") & ">" & rs("unavn") & "</a><br>"

  rs.Movenext
next
Avatar billede eagleeye Praktikant
04. februar 2005 - 17:05 #4
kolonner forkalring til det lille eks: 
hnavn er kolonne som indeholder navnet på hovedmenuen
id er id på hovedmenuen
unavn er kolonne som indeholder navnet på en undermenuen
uid er undermenu id.
Avatar billede Slettet bruger
04. februar 2005 - 17:23 #5
jeg får en fejl:

Microsoft VBScript compilation error '800a041f'

Unexpected 'Next'

/dksoc/default.asp, line 38

next
^


strSQL = "SELECT hovedmenu.id, hovedmenu.menupunkt, undermenu.menu_id, undermenu.undermenupunkt FROM hovedmenu INNER JOIN undermenu on hovedmenu.id=undermenu.menu_id  ORDER BY hovedmenu.id, undermenu.menu_id"
set rs = conn.execute(strSQL)

strMenu = ""
do while not rs.EOF
  if Cstr(strMenu) <> Cstr(rs("id")) then
    response.write "<div>" & rs("menupunkt") & "</div>"
    strMenu=rs("id")
  end if
  response.write "<a href=""default.asp?hovedmenu=" & rs("id") & "&undermenu=" & rs("uid") & ">" & rs("undermenupunkt") & "</a><br>"

  rs.Movenext
next
Avatar billede eagleeye Praktikant
04. februar 2005 - 17:26 #6
hov sidste linie skulle være loop ikke next som jeg skrev.

  rs.Movenext
loop
Avatar billede Slettet bruger
04. februar 2005 - 17:38 #7
nåja :)

Bare lige en ting, kan jeg få undermenupunkterne sorteret efter deres eget id?
Avatar billede eagleeye Praktikant
04. februar 2005 - 17:40 #8
Ja det kan gøres i ORDER BY delen:

ORDER BY hovedmenu.id, undermenu.uid"

og du kan sætte enten DESC, ASC på hver af dem hvis du ønsker det:

ORDER BY hovedmenu.id DESC, undermenu.uid ASC"
Avatar billede eagleeye Praktikant
04. februar 2005 - 17:41 #9
Den sortere først efter den første kolonne man angiver er der flere poster som har ens værdi så sorteres de poster efter den anden kolonne. Man kan sætte flere på efter behov.
Avatar billede Slettet bruger
04. februar 2005 - 17:48 #10
perfekt :) smid et svar
Avatar billede eagleeye Praktikant
04. februar 2005 - 17:49 #11
Ok :)
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