ФорумПрограммированиеPHP для идиотов → Работа с иерархией в массивах

Работа с иерархией в массивах

  • Fruzenshtein

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 5 октября 2010 г. 13:28

    Добрый день. Недавно передо мной стала задача создать сайт с большим количеством пунктов / подпунктов каталога.
    Буду максимально кратким:

    Дано:

    1. Таблица в БД categories ( cat_id | parent | cat_name )
    2. Запрос с помощью которого мы вытаскиваем все записи из таблицы categories:


    $query = 'SELECT * FROM categories ORDER BY cat_id ASC';
    $res = mysql_query($query);


    Далее думаю над созданием пунктов:

    3. Для уменьшения количества запросов к БД, использовать запись строк результирующей таблицы в иерархический массив $list (дерево).


    $list = array();

    while ($row = mysql_fetch_assoc($res))
    {

    }


    4. Создание функции, которая будет с помощью рекурсии выводить массив $list в форме списков (<ul>)

    Помогите пожалуйста с реализацией пункта 3. и 4.

    Буду рад услышать и советы по оптимизации моего решения.

    Огромное спасибо
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо
  • Fruzenshtein

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 5 октября 2010 г. 13:34, спустя 1 минуту 48 секунд

    2AlexB

    Там описаны алгоритмы работы с БД.
    А у меня случай с массивами
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 5 октября 2010 г. 13:55, спустя 21 минуту 20 секунд

    http://www.getinfo.ru/article610.html
    nested sets

    +1
    Там описаны алгоритмы работы с БД.
    А у меня случай с массивами

    -1, хуйню пишешь.
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 5 октября 2010 г. 14:01, спустя 5 минут 33 секунды


    Там описаны алгоритмы работы с БД.
    А у меня случай с массивами
    Дык эти алгоритмы для того придуманы, чтоб не заниматься нетрадиционным сексом с массивами.

    Кстати, у тебя пункт 3 протеворечит пункут 4, ты уж определись, что ты хочешь рекурсию или уменьшение количества запросов.
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 5 октября 2010 г. 14:51, спустя 49 минут 52 секунды

    Для уменьшения количества запросов к БД

    о каком количестве идет речь? покажите запросы
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 5 октября 2010 г. 15:21, спустя 30 минут 36 секунд

    4. Создание функции, которая будет с помощью рекурсии выводить массив $list в форме списков (<ul>)

    http://community.livejournal.com/ru_php/1464532.html?thread=21553364
    не всё полезно, что в swap полезло
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 5 октября 2010 г. 15:40, спустя 18 минут 5 секунд

    AlexB, ну рекурсивное обращение к массиву это все же не увеличение кол-ва запросов ;)
    В общем, пользуюсь пока методом, который и хочет реализовать автор.

    Fruzenshtein, http://phpclub.ru/faq/Tree/AlLoadAll?v=i3b
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 5 октября 2010 г. 16:32, спустя 52 минуты 51 секунду

    Что вообще возвращает запрос?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 5 октября 2010 г. 17:02, спустя 29 минут 28 секунд

    adw0rd, запрос-то явно возвращает нужные данные, просто ТС не знает пока как правильно их положить в массив, что дерево категорий выводилось быстро и легко :)
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 5 октября 2010 г. 17:50, спустя 48 минут 27 секунд

    Поэтому меня интересуют результаты
    https://smappi.org/ - платформа по созданию API на все случаи жизни

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