query($sql); $locations = $sth->fetchAll(); $smarty->assign('location_count', count($locations)); // function for recursion function build_tree($parent_id, $level) { global $locations; $children = array(); foreach ($locations as $key => $location) { if ($location['parent_id'] == $parent_id) { unset($location['parent_id']); $location['children'] = build_tree($location['id'], $level+1); $location['level'] = $level; $location['href'] = 'locationview.php?location_id=' . $location['id']; $children[] = $location; } } return $children; } $tree = build_tree(0, 0); $smarty->assign("locations", $tree); $smarty->display("location.tpl"); include("footer.php"); ?>