Приветствую.
Есть код:
<?php
$result = mysql_query ("SELECT `id`, `parent_id`, `name` FROM `catalog_cats`"); 
 
$cats = array(); // тут будет наш массив с категориями каталога
// в цикле формируем нужный нам массив
  while($cat =  mysql_fetch_assoc($result))
        $cats[$cat['parent_id']][] =  $cat;
// далее наша главная, рекурсивная функция, которая сформирует дерево категорий
function create_tree ($cats,$parent_id){
  if(is_array($cats) and  isset($cats[$parent_id])){
    $tree = '<ul>';
    foreach($cats[$parent_id] as $cat){
       $tree .= "<li><a href='catalog.html?catid=".$cat['id']."'>".$cat['name']."</a>";
       $tree .=  create_tree ($cats,$cat['id']);
       $tree .= '</li>';         
    }
    $tree .= '</ul>';
  } 
  else return null;          
return $tree;        
} 
 
// вызываем функцию и строим дерево
echo create_tree ($cats, 0);
?>
Как алгоритмически выполняется поиск по этому дереву?
Если сейчас без иерархии я ищу $sql = "SELECT id, name FROM company WHERE city='Чтото'";
Как сделать поиск в категории, если эта категория содержит еще внутри категории и элементы.