oneindig-menu

Gesponsorde koppelingen

PHP script bestanden

  1. oneindig-menu

« Lees de omschrijving en reacties

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
<?php
    function builder($parent=0) { // als $parent niet is opgegeven dan wordt deze automatisch naar 0 gezet, duidelijk is dus dat de hoofd items 0 als parent moeten hebben, de rest moet het id van de ouder hebben.        
        $menuQuery = mysql_query("SELECT id, name, url FROM menu WHERE parent = '" . $parent . "'"); // alle informatie van de betrefende children van $parent ophalen
        $menuItems = mysql_num_rows($menuQuery); // totaal aantal childeren van $parent ophalen, bepalen of een sub menu nodig is.
        
        if ($menuItems >= 1) {
            if ($parent != 0) { echo '<li><ul>'; } else { echo '<ul>'; } // begin van een nieuwe lijst
        
            while ($menuArray = mysql_fetch_array($menuQuery)) {
                echo '<li><a href="' . $menuArray[2] . '">' . $menuArray[1] . '</a></li>';
                builder($menuArray[0]); // hier zit het 'oneindige' 'em in, doordat hier een recursieve functie wordt gebruikt wordt van ieder item direct de subitems opgehaald.
            }
            
            if ($parent != 0) { echo '</li></ul>'; } else { echo '</ul>'; }
        }
    }

    
    builder(); // haal de hoofd item op
?>



Nieuwe versie met één query en zonder comments:
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
<ul><?php
    function menuData() {
        $menuQuery = mysql_query("SELECT id, name, url, parent FROM test");
        
        $i = 0;
        while ($menuArray = mysql_fetch_array($menuQuery)) {
            $menuData[$i]['id'] = $menuArray[0];
            $menuData[$i]['name'] = $menuArray[1];
            $menuData[$i]['url'] = $menuArray[2];
            $menuData[$i]['parent'] = $menuArray[3];
            $i++;
        }

        
        return $menuData;
    }
    
    function
builder($menuData, $parent=0) {
        $count = 0;
        foreach ($menuData as $childCounter) if ($childCounter['parent'] == $parent) $count++;
        
        if ($parent != 0 && $count >= 1) echo '<li><ul>'.PHP_EOL;
        
        foreach ($menuData as $menuItem)
            if ($menuItem['parent'] == $parent) {
                echo '<li><a href="' . $menuItem['url'] . '">' . $menuItem['name'] . '</a></li>'.PHP_EOL;
                builder($menuData, $menuItem['id']);
            }

        
        if ($parent != 0 && $count >= 1) echo '</ul></li>'.PHP_EOL;
    }

    
    $menuData = menuData();
    builder($menuData);
?>
</ul>


ABU..

 
 

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.