Avatar billede cyberdude Nybegynder
27. april 2004 - 17:18 Der er 8 kommentarer og
1 løsning

menu problemer

Hejsa!

Er ved at lave en munu i php / mysql
Og er nu rendt ind i lidt problemer...

Jeg vil gerne have det sådant at når jeg klikker på et menupunkt, så foldes evt. undermenuer ud, og når jeg klikk erpå et andet menupunkt i hovedemenuen, så er det dens undermenu'er der vises og den tidligere undermenu lukkes igen

Her er den kode jeg har indtil nu...

$get_menu_1 = sql("select * from lfdb_menu where aktiv = 1 AND parent = 0");
while($row = mysql_fetch_row($get_menu_1)) {
echo "<a href=\"../$row[2]\" class=\"menupkt\">$row[1]</a><br>\n";
$get_menu_2 = sql("select * from lfdb_menu where parent = '$row[0]' AND aktiv = 1");
while($row_2 = mysql_fetch_row($get_menu_2)) {
echo "<a href=\"../$row_2[2]\"><div class=\"submenupkt\">$row_2[1]</div></a>\n";
}
}

Her er database strukturen..
CREATE TABLE `menu` (
  `id` int(11) NOT NULL auto_increment,
  `navn` varchar(40) NOT NULL default '',
  `go` varchar(75) NOT NULL default '',
  `parent` int(11) NOT NULL default '0',
  `aktiv` int(1) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

Som det gør nu så vises hovedemenuen og undermenuerne vises automatisk under i en lang kører....

Og undermenuerne skal jo først gerne vises når man klikke rpå hovedemenu punktet...

Nogen hjælp at hente ?
Avatar billede dennismp Nybegynder
27. april 2004 - 17:25 #1
Avatar billede cyberdude Nybegynder
27. april 2004 - 17:43 #2
Glemte at nævne at det er et site bygget i frames....

så target er sat til en anden frame end den menu'en ligger i... så der skal vel også være noget on klik funktion på den for at opdatere 2 frames....
Avatar billede dennismp Nybegynder
27. april 2004 - 17:49 #3
Skal den så opdatere to frames? (menuen, hvis der skal foldes noget ud - og den anden med selve indholdet)
Avatar billede cyberdude Nybegynder
27. april 2004 - 17:55 #4
ja...

er kommet lidt vidre...

Her er som det ser ud nu..

$get_menu_1 = sql("select * from lfdb_menu where aktiv = 1 AND parent = 0");
while($row = mysql_fetch_row($get_menu_1)) {
?>
<a href="java script:linkFrames('../<?=$row[2];?>', '?showsub=<?=$row[0];?>');" class="menupkt"> <?=$row[1];?></a><br>
<?
if ($showsub) {
$get_menu_2 = sql("select * from lfdb_menu where parent = '$row[0]' AND aktiv = 1");
while($row_2 = mysql_fetch_row($get_menu_2)) {
echo "<a href=\"../$row_2[2]\" target=\"indhold\"><div class=\"submenupkt\">$row_2[1]</div></a>\n";
}
}
}

Problemet er nu at menuen vises korekt 1. gang man kommer ind på siden, men når man så klikker på et link, får den komandoen showsub med og reloader menu framen, og lister så ALLE menupunkternes undermenuer...

Kan ikke lige dreje den så det KUN bliver for det menupunkt jeg klikker på... ?
Avatar billede dennismp Nybegynder
27. april 2004 - 17:59 #5
mangler du ikke sådan noget i stil med ?
if ($showsub && $showsub == $row[0] ) {
Avatar billede cyberdude Nybegynder
27. april 2004 - 18:09 #6
ser nu sådant her ud

$get_menu_1 = sql("select * from lfdb_menu where aktiv = 1 AND parent = 0");
while($row = mysql_fetch_row($get_menu_1)) {
?>
<a href="java script:linkFrames('../<?=$row[2];?>', '?showsub=1&parent=<?=$row[0];?>');" class="menupkt"> <?=$row[1];?></a><br>
<?
if ($showsub == '1' && $parent && ) {
$get_menu_2 = sql("select * from lfdb_menu where parent = '$parent' AND aktiv = 1");
while($row_2 = mysql_fetch_row($get_menu_2)) {
echo "<a href=\"../$row_2[2]\" target=\"indhold\"><div class=\"submenupkt\">$row_2[1]</div></a>\n";
}
}
}

Problem :
hvis jeg klikke rpå 1. menupunkt så kommer 1. menupunkt's undermenuer som undermenu på ALLE de andre hovede menupunkter også....
Avatar billede cyberdude Nybegynder
27. april 2004 - 18:12 #7
fandt fejlen

if ($parent == $row[0]) {

skulle lige med ind...


$get_menu_1 = sql("select * from lfdb_menu where aktiv = 1 AND parent = 0");
while($row = mysql_fetch_row($get_menu_1)) {
?>
<a href="java script:linkFrames('../<?=$row[2];?>', '?showsub=1&parent=<?=$row[0];?>');" class="menupkt"> <?=$row[1];?></a><br>
<?
if ($showsub == '1') {
if ($parent == $row[0]) {
$get_menu_2 = sql("select * from lfdb_menu where parent = '$parent' AND aktiv = 1");
while($row_2 = mysql_fetch_row($get_menu_2)) {
echo "<a href=\"../$row_2[2]\" target=\"indhold\"><div class=\"submenupkt\">$row_2[1]</div></a>\n";
}
}
}
}
Avatar billede dennismp Nybegynder
27. april 2004 - 18:13 #8
if ($showsub == '1' && $parent && ) {

dette kan da umuligt virke?
Avatar billede dennismp Nybegynder
27. april 2004 - 18:20 #9
Hvis jeg må promote mit script lidt, så tror jeg faktisk du kan få det til at virke, ved at ændre lidt i printMenu, så den kalder dit javascript istedet for en url direkte.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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