<?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]<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>[/code]

ABU..