ik heb een functie gebouwd om een navigatie met submenu

<ul id="nav1">
<li>tools
	<ul><li>emcalc</li><li>colorpicker</li></ul>
</li>
<li>php</li>
<li>css
	<ul>
	<li>navigation
		<ul><li>nav1</li><li>nav2</li></ul>
	</li>
        <li>albums</li>
        </ul>
</li>
</ul>

te voorschijn laten toveren, alles lukt wel, maar keb ergens een foutje gemaakt
hij maakt achter <li>php waar geen submenu is een <ul></ul> aan.

kan iemand ff helpen, ik zie het niet direct

<?php
function listPages3() {
	// List the home page first
	$level = 2 ;
	$result = mysql_query("SELECT value FROM settings WHERE name='homePage'") or die(mysql_error());
	$row = mysql_fetch_array($result);
	$homeID = $row['value'];
	// homeID = 1
	
	$result = mysql_query("SELECT name FROM nav_0 WHERE nav0_id='$homeID'") or die(mysql_error());
	$row = mysql_fetch_array($result);
	$homeTitle = $row['name'];
	
	//homeTitle = tools
	
	$result = mysql_query("SELECT value FROM settings WHERE name='homeNavStyle'") or die(mysql_error());
	$row = mysql_fetch_array($result);
	$navStyleID = $row['value'];
	
	// $navStyleID = 1
	
	echo '<ul id="nav' . $navStyleID . '">';
	echo "<li><a href='" . BASE_URL . "/index.php'>$homeTitle</a>";
	
	// <ul id="nav1">
	// <li><a href="htpp://www.domain.be/index.php </a>
	
	if ($level == 2)
		{
		$result = mysql_query("SELECT nav1_id, name FROM nav_1 WHERE nav0_id='$homeID'") or die(mysql_error());
		
		
		echo "<ul>";
			
		while ($row = mysql_fetch_array($result)) 
			{
			// Do not list the home page twice
			$pageID2 = $row['nav1_id'];
			$pageTitle2 = $row['name'];
			echo "<li><a href='" . BASE_URL . "/index.php?id=$pageID2'>$pageTitle2</a></li>";
			}
		echo "</ul>";
		}
	echo"</li>";
	

	// List the rest of the pages
	$result = mysql_query("SELECT nav0_id, name FROM nav_0") or die(mysql_error());
	
	while ($row = mysql_fetch_array($result)) {
		// Do not list the home page twice
		if ($row['nav0_id'] != $homeID) {
			$pageID = $row['nav0_id'];
			$pageTitle = $row['name'];
			
			echo "<li><a href='" . BASE_URL . "/index.php?id=$pageID'>$pageTitle</a>";
			
			if ($level == 2) 
				{
				$result2 = mysql_query("SELECT nav1_id, name FROM nav_1 WHERE nav0_id='$pageID'") or die(mysql_error());
				echo "<ul>";
				while ($row2 = mysql_fetch_array($result2)) 
					{
					// Do not list the home page twice
					$pageID2 = $row2['nav1_id'];
					$pageTitle2 = $row2['name'];
					echo "<li><a href='" . BASE_URL . "/index.php?id=$pageID2'>$pageTitle2</a></li>";
					}
				echo "</ul>";
				} 
				
			echo "</li>";
		}
	}
	echo '</ul>';
}
?>


websourceview
 
<ul id="nav1">
<li>tools
	<ul>
	<li>emcalc</li>
	<li>colorpicker</li>
	</ul>
</li>
<li>php</li><ul></ul>
<li>css
	<ul>
	<li>navigation
		<ul>
		<li>nav1</li>
		<li>nav2</li>
		</ul>
	</li>
<li>albums</li>
</ul>

</li>
</ul>
[.code] [./code] tags gebruiken zonder de .
Gerhard lubbers op 12/01/2011 13:44:57

[.code] [./code] tags gebruiken zonder de .


oki mercikes
Ik zie niet echt onnodige <ul> en </ul> in je script,
maar ik denk dat het opgelost is als je querys uitvoert, om eerst te controleren of je wel resultaten krijgt met bijv. num_rows als je query uitkomst dan leeg is, dan hoeft hij ook geen <ul></lu> te echoën want dat doet hij nu sowieso.

En ik zou oppassen met het kiezen van de naam van je variabelen want je gebruikt nu 2x $result, misschien werkt het hierdoor wel, maar ik gebruik liever overal een andere naam voor.
Tijdje terug was hierover ook een topic.
Misschien effe opzoeken?
zoek dan "geneste", niet "genestelde" ?

Reageren