[PHP] Javascript menu opbouwen met php en MySQL

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Ik heb een menu met javascript. Dit wil ik graag beheren met een mysql database.
nu heb ik een tabel menu met daarin menu_id, navigatie_id, subnavigatie_id, subsubnavigatie_id en bestandsnaam. In de tabel menu van mijn database is menu_id uniek.

Ik moet als output het volgende krijgen:
var ssMnu1=getTopLevelMenu(1)
var ssMnu2=addMenuItem("test1", "page.php?menu_id=1","",ssMnu1);
var ssMnu3=addMenuItem("test2", "page.php?menu_id=2","",ssMnu2);

Je geeft dus aan met de laatste ssMnu aan onder welke navigatie het menu moet vallen.
De eerste var ssMnu moet een uniek getal achter zich hebben staan. Hoe kan ik ervoor zorgen dat var ssmnu een uniek getal is voor elke rij en dat de laatste ssMnu verwijst naar dat unieke getal zodat deze onder die navigatie valt.

wie kan me verder helpen?

Dit is de code die ik gebruik. Deze geeft dus geen unieke nummers, aangezien menu_id kan verwijzen naar navigatie_id, maar ook naar subnavigatie_id en subsubnavigatie_id. Deze staan allemaal in dezelfde rij van menu_id aan elkaar gekoppeld.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php 
$query_nav = "SELECT DISTINCT menu.menu_id, navigatie_id FROM menu 
ORDER BY menu_id"; 
$result_nav = mysql_query($query_nav); 

while($row_nav = mysql_fetch_array($result_nav)){ 

echo "var ssMnu$row_nav[menu_id]=getTopLevelMenu($row_nav[navigatie_id])\n"; 
} 

echo "\n"; 

$query_subnav = "SELECT DISTINCT menu.bestandsnaam, menu.menu_id, menu.subnavigatie_id, subnavigatie.subnavigatie 
FROM menu, subnavigatie 
WHERE subnavigatie.subnavigatie_id = menu.subnavigatie_id 
ORDER BY menu.subnavigatie_id"; 
$result_subnav = mysql_query($query_subnav); 

while($row_subnav = mysql_fetch_array($result_subnav)){ 

echo "var ssMnu$row_subnav[menu_id]=addMenuItem(\"$row_subnav[subnavigatie]\", \"$row_subnav[bestandsnaam]?menu_id=$row_subnav[menu_id]\",\"\",ssMnu$row_subnav[menu_id]);\n"; 
} 
echo "\n"; 

$query_subsubnav = "SELECT DISTINCT menu.bestandsnaam, menu.menu_id, menu.subsubnavigatie_id, subsubnavigatie.subsubnavigatie  
FROM menu, subsubnavigatie 
WHERE subsubnavigatie.subsubnavigatie_id = menu.subsubnavigatie_id 
ORDER BY menu.subsubnavigatie_id"; 
$result_subsubnav = mysql_query($query_subsubnav); 

while($row_subsubnav = mysql_fetch_array($result_subsubnav)){ 

echo "var ssMnu$row_subsubnav[menu_id]=addMenuItem(\"$row_subsubnav[subsubnavigatie]\", \"$row_subsubnav[bestandsnaam]?menu_id=$row_subsubnav[menu_id]\",\"\",ssMnu$row_subsubnav[menu_id]);\n"; 
} 

?> 

[ Voor 4% gewijzigd door Matthijs1982 op 11-09-2006 22:25 ]


Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 21:36

orf

Als je een suckerfish achtig menu gebruikt (opgebouws uit unordered lists) kun je dat vrij gemakkelijk genereren. Daarnaast werkt het ook nog eens zonder js.

Acties:
  • 0 Henk 'm!

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Ja, dat klopt, dat had ik eerst. Maar dit menu kan ik niet nabouwen met suckerfish. daar ben ik dagen mee bezig geweest, maar dan werkte het weer niet crossbrowser enzovoort. Het is een menu met schaduwrandjes e.d.

Ik werd daar zo moedeloos van, dat ik dacht dan pak ik het huidige menu en maak dat database gestuurd. Maar nu zit ik weer vast.

Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 20-09 23:15

NetForce1

(inspiratie == 0) -> true

Volgens mij zit je onnodig moeilijk te doen. Je kunt beter aan elk menu-item een parent_id meegeven. Dit parent_id verwijst dan naar de menu_id van het parent-item. Over hoe zo'n soort structuur te implementeren is volgens mij genoeg te vinden op GoT.

edit:
Je krijgt dan dus zoiets:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$query = "SELECT FROM menu WHERE parent_id = NULL";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
    $menuId = $row["menu_id"];
    echo "var ssMnu" . $menuId . " = getTopLevelMenu(" . $menuId . ");\n";
    echo buildSubmenuJS($menuId);
}

function buildSubmenuJS($parentId) {
    $result = "";
    $query = "SELECT FROM menu WHERE parent_id = " . $parentId;
    $rs = mysql_query($query);
    while ($row = mysql_fetch_array($rs)) {
        $result .= "var ssMnu" . $row["menu_id"] . " = addMenuItem(\"" . $row["naam"] . "\", \"" . $row["bestandsnaam"] . "?menu_id=" . $row["menu_id"] . "\", \"\", ssMnu" . $parentId. ");\n";
        $result .= buildSubmenuJS($row["menu_id"]);
    }
}
?>

uit mn blote hoofd en untested, dus geen enkele garantie...

[ Voor 63% gewijzigd door NetForce1 op 11-09-2006 23:18 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • Matthijs1982
  • Registratie: Augustus 2005
  • Laatst online: 02-06-2021
Het idee van onnodig moeilijk doen had ik ook. ;)
Ik ga ermee aan de slag, bedankt.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Kleine correctie:
SQL:
1
SELECT FROM menu WHERE parent_id = NULL

Dit pakt MySQL niet, hier moet je dit van maken:
SQL:
1
SELECT FROM menu WHERE parent_id IS NULL

Noushka's Magnificent Dream | Unity

Pagina: 1