Avatar billede mrjowns Novice
22. september 2003 - 14:22 Der er 5 kommentarer og
1 løsning

Undermenu problem igen

Jeg har en javascript menu som jeg gerne vil danne vha. asp, men jeg ved ikke lige hvordan jeg skal gøre det. Her er min db struktur:

id
navn (tekst)
hovedmenu (1=ja 0=nej)
subid (0=nej ellers lig med id)

F.eks.

Medlemmer (id=1 subid=0)
- Opret (id=2 subid=1)
- Vis (id=3 subid=1)
Organisation (id=4 subid=0)
- Rediger (id=5 subid=4)
- Vis (id=6 subid=4)

Det skulle være rigelig forklaring!?! Er der nogen der har nogen ideer til at lave dette. Jeg kan sagtens lave det så den først hiver undermenuerne ud når man trykker på topmenupunktet, men jeg vil hive det hele ud på een gang så jeg kan lave navigeringen client-side!

Nogen der kan hjælpe?
Avatar billede medions Nybegynder
22. september 2003 - 14:26 #1
Brug denne her:

www.medions.dk/bransholm

den er meget simpel og go...

//>Rune
Avatar billede mrjowns Novice
22. september 2003 - 14:36 #2
Desværre skal den tilpasses lidt mere til mit behov. Jeg burde måske have vist dig min javascript-kode:

<script language="JavaScript" src="../jscript/menu.js"></script>
<script language="JavaScript">
function buildNavigation()
{
NyKat("5", "Næste release", false, "../release/release.asp");
  NyKatLink("5", "Tidligere releases", "../release/list.asp?mode=pre");
  NyKatLink("5", "Kommende releases", "../release/list.asp?mode=for");
}

buildNavigation();
document.write(strNav);
</script>

Problemet er, at de SKAL hives ud eller arrangeres i den rigtige rækkefølge. Kan du ændre den menu på dit link så den passer til min?
Avatar billede medions Nybegynder
22. september 2003 - 14:38 #3
Har jeg desvære ikke tid til :(

//>Rune
Avatar billede mrjowns Novice
22. september 2003 - 14:39 #4
Okay, så håber jeg der er andre der ser denne....
Avatar billede mrjowns Novice
26. september 2003 - 10:09 #5
Hmmm, det var der så ikke.... ;o(
Avatar billede kers Nybegynder
03. oktober 2003 - 15:08 #6
Hej mrjowns,

Jeg har lavet en løsning som måske er lidt langhåret, men den er kanon hurtig, og kræver kun et opslag i DB.
1) lave en select fx:
SELECT a.id,a.name,a.parentid,a.pos, count(b.id) as antal
FROM menu a LEFT JOIN menu b on a.id = b.parentid
GROUP by a.id,a.name,a.parentid,a.pos
ORDER BY a.parentid,a.pos

nu har du et recordset der er nogenlunde ordnet, men du vil gerne have dem i den rækkefølge de skal vises

2) smid dem over i et array og lav en sortering fx:
orderArray = rsMenuRows.GetRows
intSize = Ubound(orderArray,2)
redim resultArray(intSize)
intCounter = 0
call OrderTest(0)
call WriteList()

sub OrderTest(parent)
  dim i
  for i = 0 to UBound(orderArray,2)
  'er det et child til den parent vi er ved nu?
  if orderArray (2,i) = parent then
    resultArray(intCounter) = i
    intCounter = intCounter + 1
    call OrderTest(orderArray (0,i))
  end if
  next
end sub

læg mærke til at OrderTest er en rekursiv sub, så den bliver ved med at kalde sig selv til du er nået igennem arrayet og du har den rigtige rækkefølge i resultArray.

3) Du skal nu have skrevet dem ud derfor kalder du sub writeList()
sub WriteList()
  for i = 1 to UBound(resultArray)
  if orderArray (2,resultArray(i)) = 0 then
    response.write "NyKat('" & orderArray (0,resultArray(i)) & "','" & orderArray (1,resultArray(i)) & "',false,'url');"
  else
    response.write "NyKatLink('" & orderArray (2,resultArray(i)) & "','" & orderArray (1,resultArray(i)) & "',false,'url');"
  end if
  next
end sub


Jeg har skrevet writelist om til dig, jeg kan se at du kun har to niveauer, ellers kan orderTest bruges til n-niveauer, den skal man bare tage højde for i writeList, men så bliver det lidt mere indviklet.

stay cool

KeRs
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