Dynamisch php menu systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jules Kreutzer

Jules Kreutzer

16/09/2014 21:19:47
Quote Anchor link
Goede avond,

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: Illegal string offset ...


De code wat voor de warning zorgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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!
 
PHP hulp

PHP hulp

19/03/2024 04:10:41
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/09/2014 22:28:10
Quote Anchor link
Ik gok dat $item enkel een geldige waarde is binnen je foreach lus.

Daar waar de fouten optreden is de foreach lus al verlaten..
 
Pipo Clown

Pipo Clown

16/09/2014 23:37:28
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.