Dynamisch Menu
Het idee is als volgt:
Aan de voorkant kan ik hier een mooi dropdown menuutje van maken. Aan de achterkant echter wil ik dan men zelf de naam voor het hoofdmenu kan kiezen in dit geval Informatie
Ik zie het zo voor me:
Dropdown met Hoofdmenu/ Submenu
en een input veld met de naam
Als er gekozen wordt voor submenu dan moet er "live/ on the fly" gekozen kunnen worden waaraan dit submenu item gekoppeld wordt in dit geval informatie.
Nu ben ik hier al mee wezen stoeien en heb het volgende:
http://denniskallansee.nl/db.jpg
Nu heb ik een parent_id en een sub_id.
Parent id voor de naam van de hoofdcategorie
Sub id voor de menu items onder die categorie
Nu wil ik aan de achterkant dat dit weergegeven wordt, in dit geval
Home
- Submenu item 1
Contact
- Submenu item 1
- Submenu item 2
- Subemnu item 3
Nu krijg ik dat laatst niet voor elkaar!
Ik probeer het als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// gegevens uit database halen
$sql = "SELECT * FROM info_page ORDER BY sub_id ASC, sort_order ASC";
$result = mysql_query($sql, $thecode) or die ('Kan gebruikersnaam niet controleren...<br />Misschien is er een probleem met de database...');
// gegevens uit database halen
$sql2 = "SELECT * FROM info_page ORDER BY sub_id ASC, sort_order ASC";
$result2 = mysql_query($sql2, $thecode) or die ('Kan gebruikersnaam niet controleren...<br />Misschien is er een probleem met de database...');
if($row['position'] == "Hoofdmenu" && $row['sub_id'] == 0){
echo '<tr><td colspan="9" class="first_title"><strong>' . $row['name'] . '</strong></td></tr>';
while($row2 = mysql_fetch_array($result2)){
if($row2['sub_id'] != 0 && $row2['parent_id'] == $row2['sub_id']){
echo '<tr><td colspan="9" class="first_title">' . $row2['name'] . '</td></tr>';
}
}
}
?>
// gegevens uit database halen
$sql = "SELECT * FROM info_page ORDER BY sub_id ASC, sort_order ASC";
$result = mysql_query($sql, $thecode) or die ('Kan gebruikersnaam niet controleren...<br />Misschien is er een probleem met de database...');
// gegevens uit database halen
$sql2 = "SELECT * FROM info_page ORDER BY sub_id ASC, sort_order ASC";
$result2 = mysql_query($sql2, $thecode) or die ('Kan gebruikersnaam niet controleren...<br />Misschien is er een probleem met de database...');
if($row['position'] == "Hoofdmenu" && $row['sub_id'] == 0){
echo '<tr><td colspan="9" class="first_title"><strong>' . $row['name'] . '</strong></td></tr>';
while($row2 = mysql_fetch_array($result2)){
if($row2['sub_id'] != 0 && $row2['parent_id'] == $row2['sub_id']){
echo '<tr><td colspan="9" class="first_title">' . $row2['name'] . '</td></tr>';
}
}
}
?>
Nu gaat er het volgende mis
Aan de achterkant krijg ik nu een lijst met
Home
-Submenu item 1
-Submenu item 2
-Submenu item 3
-Submenu item 1
-Submenu item 2
-Submenu item 3
Contact
Opzich is dat ook nog wel logisch, want die while checked eerst of position Hoofdmenu is, wat zo is daarna gaat die in de andere while en vervolgens matched alles en toont hij netjes alles onder elkaar
Heeft iemand een idee hoe ik het goed kan laten tonen? Misschien met een switch case ofzo?
Hij moet dus zo getoond worden:
Home
-Submenu item 1
-Submenu item 2
-Submenu item 3
Contact
-Submenu item 1
-Submenu item 2
-Submenu item 3
EDIT: Wat je dus beter zal doen is een nieuwe categorie toevoegen in je database tabel met submenu waar je dan waar 0 voor geen en waarde 1 voor submenu gebruikt.
Gewijzigd op 28/06/2010 23:01:33 door Ruben Portier
Wat bedoel je met voorkant / achterkant?
met voorkant/ achterkant bedoelde ik frontend / backoffice
Dennis Kallansee op 29/06/2010 00:09:56:
met voorkant/ achterkant bedoelde ik frontend / backoffice
Mooie dure woorden ... met voorkant bedoel je gewoon de website en met achterkant gewoon het CMS?
Zelf even iets gebouwd:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$sql1 = "SELECT id,name FROM info_page WHERE postion = 'Hoofdmenu'";
$result1 = mysql_query($sql1);
while($row1 = mysql_fetch_row($result1)) {
echo $row1[1].'<br />';
$sql2 = "SELECT name FROM info_page WHERE parent_id = ".$row1[0];
$result2 = mysql_query($sql2);
while($row2 = mysql_fetch_row($result2)) {
echo '- '.$row2[0].'<br />';
}
}
$result1 = mysql_query($sql1);
while($row1 = mysql_fetch_row($result1)) {
echo $row1[1].'<br />';
$sql2 = "SELECT name FROM info_page WHERE parent_id = ".$row1[0];
$result2 = mysql_query($sql2);
while($row2 = mysql_fetch_row($result2)) {
echo '- '.$row2[0].'<br />';
}
}
Zo iets moet het worden volgens mij als ik het een beetje volgen kan wat je wil.
Gewijzigd op 29/06/2010 00:25:31 door Piet Verhagen
Jaja als je niet goed kan programmeren moet je het maar op een andere manier verbloemen he ;)
Ik heb jou code iets aangepast het is nu zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$sql1 = "SELECT id, name FROM info_page WHERE position = 'Hoofdmenu'";
$result1 = mysql_query($sql1, $thecode);
while($row1 = mysql_fetch_row($result1)) {
echo $row1[1].'<br />';
$sql2 = "SELECT name FROM info_page WHERE position = 'Submenu' AND parent_id = ".$row1[0];
$result2 = mysql_query($sql2, $thecode);
while($row2 = mysql_fetch_row($result2)) {
echo '- '.$row2[0].'<br />';
}
}
$result1 = mysql_query($sql1, $thecode);
while($row1 = mysql_fetch_row($result1)) {
echo $row1[1].'<br />';
$sql2 = "SELECT name FROM info_page WHERE position = 'Submenu' AND parent_id = ".$row1[0];
$result2 = mysql_query($sql2, $thecode);
while($row2 = mysql_fetch_row($result2)) {
echo '- '.$row2[0].'<br />';
}
}
Dit werkt enigzins ik krijg nu:
U bevindt zich hier: Content beheer
Home
- Subitem 1
- Subitem 2
- Subitem 3
Contact
Waarom worden de items onder Contact niet meegenomen nu?
edit
Heb het gefixed, je haalde het id uit de database alleen heb ik de parent_id nodig uiteindelijke code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql1 = "SELECT parent_id, name FROM info_page WHERE position = 'Hoofdmenu'";
$result1 = mysql_query($sql1, $thecode);
while($row1 = mysql_fetch_row($result1)) {
echo $row1[0].'<br />';
echo $row1[1].'<br />';
$sql2 = "SELECT name FROM info_page WHERE position = 'Submenu' AND parent_id = ".$row1[0];
$result2 = mysql_query($sql2, $thecode);
while($row2 = mysql_fetch_row($result2)) {
echo '- '.$row2[0].'<br />';
}
}
?>
$sql1 = "SELECT parent_id, name FROM info_page WHERE position = 'Hoofdmenu'";
$result1 = mysql_query($sql1, $thecode);
while($row1 = mysql_fetch_row($result1)) {
echo $row1[0].'<br />';
echo $row1[1].'<br />';
$sql2 = "SELECT name FROM info_page WHERE position = 'Submenu' AND parent_id = ".$row1[0];
$result2 = mysql_query($sql2, $thecode);
while($row2 = mysql_fetch_row($result2)) {
echo '- '.$row2[0].'<br />';
}
}
?>
Gewijzigd op 29/06/2010 11:52:57 door Pong Zor
Nee ... ik deed het niet verkeerd, maar jij denkt anders, naar mijn mening verkeerd. Bij 'Submenu'-regels zou het parent_id moeten verwijzen naar het id van een 'Hoofdmenu'-regel. Bij 'Hoofdmenu'-regels zou het parent_id leeg moeten zijn, immers die hebben geen parent. Zo denk ik erover.
Ja klopt! Ik had het inderdaad helemaal verkeerd, in ieder geval het werkt nu veel kudo's/ php tags voor jouw!