Beste forumleden,

Ik heb dankzij Kris Peeters code gekregen om een dynamisch menu te maken, deze code heb ik hier en daar aangepast. Zie dit topic voor meer info hierover.

Het probleem wat ik heb is dat ik niet weet hoe ik van de data een submenu moet maken.
Op dit moment staan dus alle menu items op 1 rij in plaats van childs onder parents. Zie screenshot.



Dit is de code:

<?php        	/**
		* recursieve functie.  zoekt het item met gegeven id.  Geeft je een breadcrumb (omgekeerde volgorde).
		* Alle items in de breadcrumb krijgen een ['active']=1
		* $items wordt by ref doorgegeven, zo kunnen we de gegevens aanpassen.
		*/
		function searchInItems(&$items, $id, $breadcrumb = array()) 
		{
		  foreach ($items as $key=>$item) 
		  {
		    if($item['id'] == $id) 
		    {
		      $items[$key]['active'] = 1;
		      $breadcrumb[] = $item;
		      $a = searchInItems($items, $item['parent'], $breadcrumb);
		      if ($a) 
		      {
		        return $a;
		      }
		      break;
		    }
		  }
		  return $breadcrumb;
		}
       	
       	function buildMenu()
       	{
		// okay, stel, we zoeken de jonagold.  id=8
		// dan verwachten we dat "jonagold > appel > fruit" actief worden.
		$get_id = 8;
		
		$mysqli = new mysqli('localhost', '', '', '');  // zelf aanpassen
		$sql = "SELECT id, parent, sort, label, link, status
		  FROM menu_items
		  ORDER BY parent, sort";
		
		///////////////////////////////
		// Items halen en in array steken
		$items = array();
		$res = $mysqli->query($sql);
		while($row = $res->fetch_assoc()) 
		{
		  $items[] = $row;
		}
		
		///////////////////////////////
		// actief maken.  Je krijgt gratis een breadcrumb. ...
		$breadcrumb = searchInItems($items, $get_id);
		
		//echo '<hr>Breadcrumb: <pre>' . print_r($breadcrumb, 1) . '</pre>';
		
		//echo '<hr>Items: <pre>' . print_r($items, 1) . '</pre>';

		echo '<div id="menu"><ul>';
		
		foreach ($items as $menuItem)
		{
			
		if(!empty($menuItem['active'])) 
		{
			$active = 'class="active"';
		}
		else
		{
			$active = '';
		}
			
			
			echo '<li '.$active.'><a '.$active.' href='.$menuItem['link'].'>'.$menuItem['label'].'</a></li>' ;
		}
		
		//echo '<li><a href="'.$items['link'].'">'. print_r($items, 1) . '</a></li>';
		
		
		
		echo '</ul></div>';
		
		
	} ?>

Reageren