Hallo,

Ik ben bezig met een dropdown menu maar die word aan gestuurd via het database. voorbeeld:

home fotoalbum
nieuws zon zee strand
profiel vakantie 2008


etc. Alleen nu krijg ik telkens dit :

home fotoalbum
nieuws nieuws
profiel profiel
zon zee strand
vakantie 2008

Zou iemand misschien naar me code willen kijken of iemand het ziet wat ik nu fout doe.

Me code :

<?php
$menu_sql = mysql_query("
	SELECT *
	FROM dspifvwm_pagina
	WHERE pagina_upper = '0'
	ORDER BY pagina_rank ASC
") or die ("Fout hoofdmappen : " . mysql_error());

if($aantal_result = mysql_num_rows($menu_sql) == 0){
	$menu_structuur_html = "";
}else{

		while($resultaat = mysql_fetch_assoc($menu_sql)) {
			
				//Alles onder hoofdmappen ophalen
				$sub_menu_sql = mysql_query("
					SELECT * 
					FROM dspifvwm_pagina
					WHERE pagina_upper = '".$resultaat['pagina_id']."'
				") or die ("Fout submappen : " . mysql_error());
				
				if($aantal = mysql_num_rows($sub_menu_sql) == 0){
				
					$sub_menu_structuur_html = "";
					
				}else{
				
					$sub_menu_structuur_html .= "<ul>";
					
					while($result = mysql_fetch_assoc($sub_menu_sql)) {
					
						
							//HTML Thirdmappen
							$third_menu_sql = mysql_query("
								SELECT *
								FROM dspifvwm_pagina
								WHERE pagina_upper = '".$result['pagina_id']."'
							") or die ("Fout THIRDmappen : " . mysql_error());
							
							if($aantal1 = mysql_num_rows($third_menu_sql) == 0) {
								$third_menu_structuur_html = "";
							}else{
								
								$third_menu_structuur_html .= "<ul>";
									
								while($record = mysql_fetch_assoc($third_menu_sql)){
									$third_menu_structuur_html .= "
										<li> <a href=\"" . $record['pagina_url'] . "\">" . $record['pagina_naam'] . "</a></li>
									";
								};
								
								$third_menu_structuur_html .= "</ul>";
							};
						
						
						//HTML submappen
						$sub_menu_structuur_html .= "
							<li> <a href=\"" . $result['pagina_url'] . "\">" . $result['pagina_naam'] . "</a>		
								$third_menu_structuur_html
							</li>
						";
						
					};
					
					$sub_menu_structuur_html .= "</ul>";
				};
		
			//HTML hoofdmappen
		
			$menu_structuur_html .= "
				<li> <a href=\"" . $resultaat['pagina_url'] . "\">" . $resultaat['pagina_naam'] . "</a>
						$sub_menu_structuur_html
				</li>
			";
		
		};
};

$plug_menu_array = file_get_contents ("./plugs/plug_menu/plug_site/templates/menu_overzicht.html");

$plug_menu_array = str_replace("{-plug_menu-}", $menu_structuur_html, $plug_menu_array);

echo $plug_menu_array ;

?>


Alvast bedankt
Maak gebruik van een recursieve functie. Kijk hier eens naar:

<?php
function NestedMenu($parent = 0) {
// maak een array om alle opties in op te slaan
$aNestedMenu = array();

// haal alle menu items op waar de parent 0 is
// haal ook meteen op of er childs zijn via een subquery
$sQuery = "SELECT a.*, (SELECT COUNT(*) FROM menu AS b WHERE b.parent = a.id) AS childs FROM menu AS a WHERE a.parent = ".(int)$parent;
$sResult = mysql_query($sQuery);

// ga alles na
if($sResult) {
// er zijn menurecords
if(mysql_num_rows($sResult) > 0) {
// loop ieder menu record na
while($sRij = mysql_fetch_assoc($sResult)) {
// en kijk of deze kinderen heeft of niet
if($sRij['childs'] > 0) {
// zo ja ga met deze parent nog een keer de functie langs om alle kinderen hiervan op te halen.
$aNestedMenu[]['id'] = $sRij['id'];
$aNestedMenu[]['childs'] = NestedMenu($sRij['id']);
} else {
// zo nee sla alleen het id op en doe verder niets
$aNestedMenu[]['id'] = $sRij['id'];
}
}

// return de array
return $aNestedMenu;
} else {
return 'Geen menurecords gevonden.';
}
} else {
return mysql_error().' in query: '.$sQuery;
}
}

function handleNestedMenu($aMenu, $level = 0) {
$output = '';

foreach($aMenu as $aOpties) {
if(isset($aOpties['childs'])) {
$output .= handleNestedMenu($aOpties['childs'], ($level+1));
} else {
$niveau = $level*4;
for($i=0;$i<=$niveau;$i++) {
$output .= '&nbsp;';
}
$output .= '- <a href="?id='.$aOpties['id'].'">'.$aOpties['id'].'</a>'.PHP_EOL;
}
}

return $output;
}

$aNestedMenu = NestedMenu();
$aHandledMenu = handleNestedMenu($aNestedMenu);

echo $aHandledMenu;
?>

Kun je vast wel wat mee. Let wel: begrijp dit script en ga het niet zomaar gebruiken! Dat is niet mijn bedoeling.

Reageren