Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как выбрать данные из многомерного массива?
 
 автор: tAleks   (11.12.2006 в 16:05)   письмо автору
 
 

Есть каталог с бесконечной вложенностью. Я извлекаю все группы и загоняю данные в массив.:

    // Извлекаем все группы
    $sql = "SELECT name, code_group, code_parent, showhide FROM cms_groups";
    $query = mysql_query($sql);
    // если запрос не сделан, или сток извлечено < 1 возвращаем FALSE
    if(!$query || mysql_num_rows($query) < 1) return FALSE;
    // Запихиваем все в массив
    while ($k = mysql_fetch_assoc($query)) { $g[@++$i] = $k; }


Получился примерно такой масив:

$g => Array
        (
    [1] => Array
        (
            [name] => Группа 2
            [code_group] => 16
            [code_parent] => 15
            [showhide] => show
        )

    [2] => Array
        (
            [name] => Группа 3
            [code_group] => 17
            [code_parent] => 16
            [showhide] => show
        )

    [3] => Array
        (
            [name] => Группа 4
            [code_group] => 18
            [code_parent] => 17
            [showhide] => show
        )

    [4] => Array
        (
            [name] => Группа 5
            [code_group] => 19
            [code_parent] => 18
            [showhide] => show
        )
);


Как теперь из него выстроить путь?
К примеру передан параметр code_group=19. нужно построить путь от этой группы до корня.
Как это сделать?

   
 
 автор: cheops   (11.12.2006 в 18:16)   письмо автору
 
   для: tAleks   (11.12.2006 в 16:05)
 

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

   
 
 автор: tAleks   (12.12.2006 в 13:10)   письмо автору
 
   для: cheops   (11.12.2006 в 18:16)
 

А много запросов не "вредно"?
Не нагружает ли это сервер?

   
 
 автор: cheops   (12.12.2006 в 15:45)   письмо автору
 
   для: tAleks   (12.12.2006 в 13:10)
 

Вредно и нагружает, но не сразу... например, этот форум построен именно на рекурсивной основе, т.е. отступы вычисляются путём рекурсивного спуска - торможение в первую очередь созадют многотабличные запросы (формирование списка тем, подсчёт количества новых сообщений) - поиск по 40Мб таблице сообщений не приводит к заметному снижению скорости отображения самой темы.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования