<?php

    $conn = mysql_connect('localhost', 'root', '');
	@mysql_select_db('test', $conn);

	function printMenu($array){
		foreach($array as $item){
			if(is_array($item) && isset($item['name'])){
				echo "<ul>\n";
					if(getChildren($item['id'], false)){
						echo "<li>".$item['name'];
						printMenu(getChildren($item['id'], true));
						echo "</li>\n";
					} else {
						echo "<li>".$item['name']."</li>\n";
					}
	
				echo "</ul>\n\n";
			}
		}
	}
	
	function getChildren($id, $return = false){
		global $conn;
		$query = mysql_query("SELECT * FROM `tbl_category` WHERE `parent_id` = ".(int)$id);
		$num = mysql_num_rows($query);
		if($num){
			if($return){
				while($row = mysql_fetch_assoc($query)){
					$rows[] = $row;
				}
				return $rows;
			}
			return true;
		}
		return false;
	}
	

	$query = mysql_query("SELECT `id`, `parent_id`, `name` FROM `tbl_category` WHERE `parent_id`=0") or die(mysql_error());
	while($row = mysql_fetch_assoc($query)){
		$rows[] = $row;
	}
	printMenu($rows);