Нужно правильно рассортировать значения в массиве

zanzaz

Guest
Нужно правильно рассортировать значения в массиве

В общем, идея такова.
Создаю каталог с неограниченными вложениями каталогов.
БД стандартная:
id | gid | name
id - номер порядковый
gid - если 0 - это корневик, если нет - под-каталог какого-либо каталога (указывается id каталога)
name - :) понятно что

В общем, столкулся с проблемой, что нужно создать пути от каждого конечного каталого до корневика.
Например:
Путь "каталог 2" есть:
Главный каталог - > каталог 1 -> каталог 15 -> каталог 35 - > каталог 11 -> каталог 2
или
Путь "каталог 85" есть:
Главный каталог - > каталог 29 -> каталог 54 -> каталог 22 - > каталог 19 -> каталог 15 -> каталог 13 -> каталог 85
.. в таком тоне..

Я пытался осуществить это с помощью массивов.. но не смог реализовать полностью..
т.е. брал конечный id каталога и проверял, его на наличие в поле gid

PHP:
$sql = "SELECT id, gid, name FROM catalog";

$result = $db->query($sql);
 
$tree = array();

while($myrow = $db->fetch_array($result)){

 $cid  = $myrow[cid];
 $gid  = $myrow[gid];
 $name = $myrow[name];
  .......
 $tree[$cid][gid] = $gid;
}
$buf = $tree;
$tree2 = array();
foreach ($tree as $cid=>$key){
  if ($key[gid]!=0){
  // получаем родитескую категорию
  $gid2 = getGidForCid($key[gid],$buf );
  // запиминаем ее
  $tree2[$cid][gid][] = $gid2;
  ///.... и тут я дальше пасс..
 // не знаю как дальше проверить следующие родительские категории $gid2 с учетом того, чтобы не запускать цикл (каталогов больше 100) и на каждый каталог цикл запускать.. мне кажется это накладно.. (( 
  }
}
У меня не было опыта именно с этим. Боюсь сделать так, чтобы это оказалось накладным для рабочей машинки, т.к. посещаемость ресурса в среднем от 10.000 ...

Пожалуйста, очень прошу, кто сталкивался с такой проблемой или кто знает, как можно реализовать, откликнитесь..

Заранее, Спасибо
 

Фанат

oncle terrible
Команда форума
попробуй почитать на этом форуме про рекурсию и деревья
тут написаны просто тонны текстов на эту тему.
Не говоря уже о статьях в разделе "Статьи".
Пока ты даже терминов не знаешь, говорить с тобой бесполезно.
 

zanzaz

Guest
Я как раз дочитывал статью про "Хранение древовидных структур в Базах данных" http://detail.phpclub.net/article/db_tree

Спасибо за помощь
 
Сверху