PHP N-level menu using recursion with DB structure

Recently I needed to come up with a code that would help me create a n-level menu and breadcrumb for that. So for that I wrote this code which works with great ease and provides huge flexibility. Also I kept it really low so that it is easy to embedded it in any kind of design. This is just the half part of my code which prints the menu.

Function:

$table	= 'menu';

/**
 * The showMenu() function prints the menu with all its sub menus
 * @params:	$ulclass  common class to be applied in ul elements
		$liclass  common class to be applied in li elements
		$father   Father of each child menu. Pass '0' to print complete menu.
 * return:	string
 */
function showMenu($ulclass, $liclass, $father) {
	$showmenu_query = "select * from $table where menu_father='" . $father . "' order by menu_order";
	$exec_showmenu = mysql_query($showmenu_query);

	if ( !$exec_showmenu) {
		echo "Query failed. Check your query. Error Returned: " . mysql_error();
		return false;
	}

	$toAppend = '<ul class="' . $ulclass . '">';

	while ($row_showmenu = mysql_fetch_assoc($exec_showmenu)) {
		$toAppend.= '<li class="' . $liclass . ' &nbsp; '. $row_showmenu['menu_class'] . '">';
		$toAppend.= '<a href="' . stripslashes($row_showmenu['menu_slug']) . '">' . stripslashes($row_showmenu['menu_name']);
		$toAppend.= '</a>';

		$submenu_query = "select * from $table where menu_father='" . $row_showmenu['menu_id'] . "'";
		$exec_submenu = mysql_query($submenu_query);

		if (mysql_num_rows($exec_submenu)>0 ) {
			$toAppend.= $showMenu($ulclass, $liclass, $row_showmenu['menu_id']);
		}

		$toAppend.= '</li>';
	}

	$toAppend.= '</ul>';
	return $toAppend;
}
Continue reading “PHP N-level menu using recursion with DB structure”