Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: koleto в Sep 12, 2009, 00:18



Титла: Алгоритъм за йерархия в масив
Публикувано от: koleto в Sep 12, 2009, 00:18
Здравейте. Опитвам се да направя дървовидно меню за едно мое приложение, но имам проблем. Категориите се пазят в база от данни. Още в началото на поста искам да се извиня, че не мога да ползвам точните термини за нещата който пиша, но все още се уча. Искам да представя, йерархия от данни в масив(имам предвид да се получи дърво). След като ги взема от базата данни имам следния масив в който се пазят категориите:

Код
GeSHi (PHP):
  1. $array = array();
  2. $array[1] = array('parent' => 0, 'title' => 'I am node 1.');
  3. $array[2] = array('parent' => 1, 'title' => 'I am node 2.');
  4. $array[3] = array('parent' => 1, 'title' => 'I am node 3.');
  5. $array[4] = array('parent' => 0, 'title' => 'I am node 4.');
  6. $array[5] = array('parent' => 2, 'title' => 'I am node 5.');
  7. $array[5] = array('parent' => 2, 'title' => 'I am node 6.');

Трябва да се получи нещо такова:
  • I am node 1.
    • I am node 2.
      • I am node 5.
      • I am node 6.
    • I am node 3.
  • I am node 4.

В индекса parent се съдържат идентификатор, който показва номера на родителския елемент. Сега проблема идва при опита ми да напиша алгоритъм който да ги подрежда по този начин. Пробвах да го измисля сам, написах го и съм обеден че е правилно, но не работи. Явно самото ми мислене е грешно, затова искам да ви помоля за помощ, поне да ми хвърлите някой материал който да прочета и да си реша проблема. Мерси предварително.






Титла: Re: Алгоритъм за йерархия в масив
Публикувано от: VladSun в Sep 12, 2009, 02:59
Прочети първо тази статия (няма значение, че е MySQL): http://dev.mysql.com/tech-resources/articles/hierarchical-data.html и си избери DB дизайн. Показано е и за двата дизайна как се изършват най-често срещаните запитвания към базата.


Титла: Re: Алгоритъм за йерархия в масив
Публикувано от: koleto в Sep 13, 2009, 15:19
Колко лесно било. VladSun мерси много.