Menu uit een db halen
Voor mijn site wil ik ale menus uit een db laden, nu weet ik opzich wel hoe dat moet, maar ik loop tegen een probleem aan
code:
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
24
25
26
27
28
29
30
31
32
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
<?
$sql = "SELECT * FROM adm_menus ORDER BY type";
$result = mysql_query($sql);
echo "<table width=166 cellpadding=0 cellspacing=0>";
echo "<tr>";
echo "<td><img src=layout/menu_content/mysql.gif></td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src=../layout/images/menu_content/main_top.gif></td>";
echo "</tr>";
echo "<tr>";
echo "<td background=../layout/images/menu_content/menu_bg.gif>";
echo "<table width=94% align=center>";
echo "<tr>";
echo "<td>";
while ($menu = mysql_fetch_array($result)) {
echo "<img src=../layout/images/arrow.gif border=0> <a href=?p=mysql/".$menu['link'].">".$menu['menu']."</a><br>";
}
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src=../layout/images/menu_content/main_bottom.gif></td>";
echo "</tr>";
echo "</table>";
?>
$sql = "SELECT * FROM adm_menus ORDER BY type";
$result = mysql_query($sql);
echo "<table width=166 cellpadding=0 cellspacing=0>";
echo "<tr>";
echo "<td><img src=layout/menu_content/mysql.gif></td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src=../layout/images/menu_content/main_top.gif></td>";
echo "</tr>";
echo "<tr>";
echo "<td background=../layout/images/menu_content/menu_bg.gif>";
echo "<table width=94% align=center>";
echo "<tr>";
echo "<td>";
while ($menu = mysql_fetch_array($result)) {
echo "<img src=../layout/images/arrow.gif border=0> <a href=?p=mysql/".$menu['link'].">".$menu['menu']."</a><br>";
}
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src=../layout/images/menu_content/main_bottom.gif></td>";
echo "</tr>";
echo "</table>";
?>
Nu bouwt hij het menu om de while lus heen die alle records uit de db haalt!.
als ik de gehele tabel in de while lus zet bouwt hij voor elk record het hele menu opnieuw.
Ik wil dat hij het menu opbouwt. alle opties die bij het type horen erin klapt en een nieuw menu bouwt meny daar weet alle opties in die bij dat type hoort enz!..
Gewijzigd op 30/12/2005 20:00:00 door Ronnie
Menu 1
optie 1a
optie 1b
Menu 2
optie 2a
optie 2b
optie 2c
Menu 3
optie 3a
Is dat inderdaad zo?
jah.
SELECT link, menu
FROM enz
Verder staat alleen type er nog in!. wat is het voordeel om het zo te doen?.. is het sneller?.
Ronnie:
jah.
Als je zo'n menustructuur wilt, moet die ook in je db staan natuurlijk. Bij zo'n boomstructuur werk je meestal met parents en children bijv.
SELECT link, menu FROM adm_menus WHERE type =...
en dan while enz.
Ik heb nu zelf wel al een idee!.. alleen dan zou ik met 2 tabellen moeten gaan werken!..., als t met 1 kan is dat natuurlijk beter!.
Ronnie:
Ik heb nu zelf wel al een idee!.. alleen dan zou ik met 2 tabellen moeten gaan werken!..., als t met 1 kan is dat natuurlijk beter!.
Met 1 tabel hoeft niet per definitie beter te zijn, soms is dat een stuk minder snel dan als je met 2 tabellen werkt.
In jouw geval kan het wel, maar is het niet handig.
Stel je hebt een tabel Menu's met een id en de menu naam (menu1, menu2, etc) en een tabel links met daarin een id, link, menuid en een type.
Menu -->ID, NAAM
Links -->ID, LINK, MENUID, TYPE
Als je dit in 1 tabel zou zetten, wordt het veel lastiger om mee te werken, en om nieuwe menu's toe te voegen.
Met 2 tabellen zet je het menuid in de tabel bij de links, en met die ID haal je de naam van dat menu uit de menu tabel. (zo zou ik het doen)
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
24
25
26
27
28
29
30
31
32
33
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
<?
$sql = "SELECT menu FROM adm_menus";
$result = mysql_query($sql);
while ($menu = mysql_fetch_array($result)) {
echo "<table width=166 cellpadding=0 cellspacing=0>";
echo "<tr>";
echo "<td><img src=layout/menu_content/mysql.gif></td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src=../layout/images/menu_content/main_top.gif></td>";
echo "</tr>";
echo "<tr>";
echo "<td background=../layout/images/menu_content/menu_bg.gif>";
echo "<table width=94% align=center>";
echo "<tr>";
echo "<td>";
$sql_optie = "SELECT * FROM adm_opties WHERE menuid = ".$menu['id']."";
$result_optie = mysql_query($sql_optie);
while ($optie = mysql_fetch_array($result_optie)) {
}
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src=../layout/images/menu_content/main_bottom.gif></td>";
echo "</tr>";
echo "</table>";
}
?>
$sql = "SELECT menu FROM adm_menus";
$result = mysql_query($sql);
while ($menu = mysql_fetch_array($result)) {
echo "<table width=166 cellpadding=0 cellspacing=0>";
echo "<tr>";
echo "<td><img src=layout/menu_content/mysql.gif></td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src=../layout/images/menu_content/main_top.gif></td>";
echo "</tr>";
echo "<tr>";
echo "<td background=../layout/images/menu_content/menu_bg.gif>";
echo "<table width=94% align=center>";
echo "<tr>";
echo "<td>";
$sql_optie = "SELECT * FROM adm_opties WHERE menuid = ".$menu['id']."";
$result_optie = mysql_query($sql_optie);
while ($optie = mysql_fetch_array($result_optie)) {
}
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td><img src=../layout/images/menu_content/main_bottom.gif></td>";
echo "</tr>";
echo "</table>";
}
?>
krijg alleen een error
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
wat is er fout ik ken t niet vinden
* EDIT. ik heb het a gevonden!. eerste qeury haalde ik alleen maar menu uit de db ipv ID erbij
Gewijzigd op 30/12/2005 20:58:00 door Ronnie