Dynamisch php menu systeem
Ik ben bezig met het maken van een menu systeem voor mijn website. Ik heb een functie die een naam, link en parent opslaat in een database. Dit werkt perfect. Wanneer ik het menu wil weergeven, krijg ik echter verschillende warnings de zien. Een voorbeeld:
De code wat voor de warning zorgt:
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
34
35
36
37
38
39
40
41
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
37
38
39
40
41
<?php
function displayMenuBeheer()
{
global $mysqli,$db_table_prefix,$baseUrl;
$stmt = $mysqli->prepare("SELECT * FROM ".$db_table_prefix."menu_beheer");
$result = $stmt->execute();
$stmt->bind_result($id,$name,$link,$parent);
while($stmt->fetch()) {
$row = array("id" => $id,"name" => $name, "link" => $link, "parent" => $parent);
}
foreach($row as $item) {
$html = "<ul class='nav' id='side-menu'>";
if($item['parent'] == 0) {
$html .= "<li><a href='".$baseUrl."".$item['link']."'>".$item['name']."</a></li>";
if($item['parent'] > 0 && $item['parent'] == $item['id']) {
$html .= "<ul class='nav nav-second-level'>";
$html .= "<li><a href='".$baseUrl."".$item['link']."'>".$item['name']."</a></li>";
$html .= "</ul>";
}
}
}
$html .= "</ul>";
}
?>
De code die voor de problemen zorgt:
<?php
if($item['parent'] == 0) {
$html .= "<li><a href='".$baseUrl."".$item['link']."'>".$item['name']."</a></li>";
if($item['parent'] > 0 && $item['parent'] == $item['id']) {
?>
Weet iemand waar de fout in bovenstaande code zit?
Ik heb de code verder nog niet getest omdat ik geen output zie. De record die in de database staan worden dus ook niet weergegeven. Wanneer je dus tips hebt over hoe ik de code kan verbeteren, zijn die natuurlijk welkom!
function displayMenuBeheer()
{
global $mysqli,$db_table_prefix,$baseUrl;
$stmt = $mysqli->prepare("SELECT * FROM ".$db_table_prefix."menu_beheer");
$result = $stmt->execute();
$stmt->bind_result($id,$name,$link,$parent);
while($stmt->fetch()) {
$row = array("id" => $id,"name" => $name, "link" => $link, "parent" => $parent);
}
foreach($row as $item) {
$html = "<ul class='nav' id='side-menu'>";
if($item['parent'] == 0) {
$html .= "<li><a href='".$baseUrl."".$item['link']."'>".$item['name']."</a></li>";
if($item['parent'] > 0 && $item['parent'] == $item['id']) {
$html .= "<ul class='nav nav-second-level'>";
$html .= "<li><a href='".$baseUrl."".$item['link']."'>".$item['name']."</a></li>";
$html .= "</ul>";
}
}
}
$html .= "</ul>";
}
?>
De code die voor de problemen zorgt:
<?php
if($item['parent'] == 0) {
$html .= "<li><a href='".$baseUrl."".$item['link']."'>".$item['name']."</a></li>";
if($item['parent'] > 0 && $item['parent'] == $item['id']) {
?>
Weet iemand waar de fout in bovenstaande code zit?
Ik heb de code verder nog niet getest omdat ik geen output zie. De record die in de database staan worden dus ook niet weergegeven. Wanneer je dus tips hebt over hoe ik de code kan verbeteren, zijn die natuurlijk welkom!
Daar waar de fouten optreden is de foreach lus al verlaten..
Code (php)
1
2
3
2
3
if($item['parent'] == 0) {
$html .= "<li><a href='".$baseUrl."".$item['link']."'>".$item['name']."</a></li>";
if($item['parent'] > 0
$html .= "<li><a href='".$baseUrl."".$item['link']."'>".$item['name']."</a></li>";
if($item['parent'] > 0
Wanneer de eerste If true is ($item['parent'] == 0), dan zal de 2e If ($item['parent'] > 0) nooit en te nimmer true kunnen zijn.
Wanneer de eerste If false is dan wordt de 2e If nooit bereikt.