menu opbouw
werking:
[click] op hoofdmenu laat alle submenu's zien
voorbeeld:
-hoofdmenu-A
---submenu-1
---submenu-2
---submenu-3
[click] in submenu-2 laat alle subsubmenu's in 2 zien
voorbeeld:
-hoofdmenu-A
---submenu-1
---submenu-2
-------subsubmenu-2.1
-------subsubmenu-2.2
---submenu-3
[click] in submenu-3 laat alle subsubmenu's in 3 zien en klapt alle subsubmenu's in 2 in.
voorbeeld
-hoofdmenu-A
---submenu-1
---submenu-2
---submenu-3
-------subsubmenu-3.1
-------subsubmenu-3.2
Voor iedere pagina heb ik het op deze manier staan :-(
Er is vast wel een betere manier. Heb het een en ander met include geprobeerd maar daardoor is het niet dynamisch.
Misschien op te lossen via een database? Iemand die me opweg kan helpen, richting kan geven?
Daarnaast maak je dan een functie die de array omzet in een menu (ik zou voor een combinatie van list-elementen (ul, li) en wat javascript gaan).
Dan include je het bestand dat de array en de functie bevat in het begin van je pagina. En daar waar het menu moet komen, roep je de functie aan.
Aan de functie zou je eventueel nog extra parameters kunnen verkopen zoals welk menu is uitgeklapt e.d.
Maar naar welke interactiviteit zoek je precies?
Jelmer:
Aan de functie zou je eventueel nog extra parameters kunnen verkopen zoals welk menu is uitgeklapt e.d.
Maar naar welke interactiviteit zoek je precies?
Maar naar welke interactiviteit zoek je precies?
..ik snap je vraag eigenlijk niet. Antwoorden is erg lastig dan :-). Kun je het anders formuleren?
Ik vind wel javascripts maar dan moet ik mijn links allemaal in het *.js bestand zetten.
http://users.skynet.be/javascript/menus/navigatie.htm
Mijn bedoeling is echter dat ik het menu zou kunnen intergreren in mijn php bestand.
Een goede oplossing is dus via een database, waarmee je een multidimensionale array genereert en daarna een recursieve functie maakt die alle items af gaat.
Dus je hebt dan een tabel in je database waar bijvoorbeeld menu links in staan, en voor elke menu link geef je dus een parent_id op. Parent_id 0 is dan de root. Dan ga je per menu item af of hij een parent is, volgens mij zoiets :P
Hoe zou de tabelstructuur in de database er uit kunnen zien?
en veld in van 6 cijfers bijv 021203
submenu 02
subsubmenu 12
subsubsubmenu 03
Nu wil ik niet mijn menustructuur opbouwen in mijn pagina's maar genereren vanuit een database.
Uitgaande dat elk menu item een link is, het volgende. Hoofdmenu kan 1 of meerder submenu's hebben. Een submenu kan 1 of meerdere sub sub menu's hebben. Een menu (lees link) kan vanuit verschillende plekken op de site worden aangeroepen.
Waar ik niet uit ben is een correcte tabellenstructuur.
Dit is mijn gedachtengang tot nu toe:
Menu kan in drie groepen worden onderveeld
1. Hoofdmenu's
2. SubMenu's van het hoofdmenu
3. Sub-submenu's van het SubMenu (punt2).
Is het verstandig om de volgende tabellen op te zetten?
A)1 tabel voor ALLE menu's met ID en pad
B)1 tabel voor het Hoofdmenu met ID en pad
C)1 tabel waarin de structuur wordt vastgelegd, een koppeltabel tussen A en B.
Tabel C zou er dan als volgt uit kunnen zien:
ID, ID uit B, ID uit A, Level nr.
Level nr is dan het niveau van een menu(lees link) uit tabel A, waarbij je met 1 zou kunnen aangeven dat het een submenu is en met 2 een sub sub menu.
Als dit een goede manier zou zijn, hoe zou ik de informatie uit de tabel in een multidimensionale array kunnen stoppen? Als dit geen goede methode is, please help. Heb de afgelopen me suf lopen piekeren hoe dit aan te moeten pakken.
Of maak ik het nu allemaal te ingewikkeld en is het niet nodig en kan het allemaal veel simpeler.....
id
level -> hoofd, sub, sub-sub (of 1, 2, 3 )
plaats -> hoeveelste in de rij (1 - ... ) (0 is voor de naam van het level)
naam
url
target
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<? $max = 3;
for ($level = 1; $level <= $max; $level++) {
$sql = "SELECT * FROM menu WHERE level = ".$level." ORDER BY plaats ASC";
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
{
while ($menu = mysql_fetch_array($res)){
for ($i = 1; $i <= $level; $i++) {
echo " ";
}
if($menu[plaats] == 0){
echo "<b>".$menu[naam]."</b><br>\n";
}else{
echo "<a href=\"".$menu[url]."\" target=\"".$menu[target]"\">".$menu[naam]."</a>\n";
}
}
}
}
?>
for ($level = 1; $level <= $max; $level++) {
$sql = "SELECT * FROM menu WHERE level = ".$level." ORDER BY plaats ASC";
$res = mysql_query($sql);
if (mysql_num_rows($res) >= 1)
{
while ($menu = mysql_fetch_array($res)){
for ($i = 1; $i <= $level; $i++) {
echo " ";
}
if($menu[plaats] == 0){
echo "<b>".$menu[naam]."</b><br>\n";
}else{
echo "<a href=\"".$menu[url]."\" target=\"".$menu[target]"\">".$menu[naam]."</a>\n";
}
}
}
}
?>
hiermee kan je het menu laten tonen.
ik heb wel er geen javascript ingestoken om ze te laten tonen/verbergen. dit laat ik aan anderen over die er wat meer overweg mee kunnen.
hopelijk heb je er wat aan
Gewijzigd op 26/11/2005 14:46:00 door Hipska BE
pointer root? dan 0, anders wijst naar id van lagere map
url indien map dan leeg anders url
dus records met deze inhoud
1 0 leeg
2 1 leeg
3 2 www.a.nl
4 2 www.b.nl
5 2 leeg
6 5 www.c.nl
7 1 www.d.nl
geeft deze structuur
root
map
map
www.c.nl
www.a.nl
www.b.nl
www.d.nl
Gewijzigd op 26/11/2005 16:03:00 door zackat
wat is dan hier eigenlijk de sub sub level?
In het voorbeeld van SanThe, zou ik zeggen: 2, en voor sub-sub-sub 3, enz?
volgens mij kun je op deze manier niet meer achterhalen welk submenu bij welk hoofdmenu hoort......?
zackat:
Uitgaande dat elk menu item een link is, het volgende. Hoofdmenu kan 1 of meerder submenu's hebben. Een submenu kan 1 of meerdere sub sub menu's hebben. Een menu (lees link) kan vanuit verschillende plekken op de site worden aangeroepen.
Gewijzigd op 26/11/2005 16:30:00 door zackat
Het is wel te doen, maar een simpel scriptje is het niet.
In mijn eigen quote, van mijn vorig bericht beschrijf ik de onderlinge relaties.
Probleem is wel helder dacht ik zo, zoniet dan moet ik het op een andere manier duidelijk maken.
Dat het te doen is, klinkt eindelijk als muziek in mijn oren!! en aangezien je muziekleraar bent :-)...
Ik ben cker een beginner en dat het niet makelijk is, moet dan maar een xtra uitdaging worden.
Ik moet een hele goede start maken met het opzetten ervan en daarbij is alle phphulp welkom.
Het begint toch met het concept van de tabellen die ik duidelijk moet hebben.