Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> деревья(2-4 уровня) или 4ре таблицы, что лучьше 
:(
    Опции темы
gribikc
  Дата 13.5.2008, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 9.2.2003

Репутация: нет
Всего: нет



Код

элемент 1
  |
  + - элемент 2
  |     |
  |     + - элемент 3
  |     + - элемент 4
  |
  + - элемент 5

ну эт всем понятно 
вот функция вывода 
Код

function get_tree($parent_id = 0, $prefix = "") {
      global $out;
      $query = "SELECT * FROM catalogs WHERE parent_id = '$parent_id'";
      $result = mysql_query($query);
      while ($row = mysql_fetch_array($result)) {
            $out .= $prefix.$row['cat_name']."<br>";
            get_tree($row['cat_id'], $prefix."&nbsp;&nbsp;");
      }
      return $out;
}
echo get_tree(); 



ну так вот тут получается куча запросов к базе при работе как с деревом а эт не очень хорошё 
так вот вопрос...

целесообразно  использовать деревья в случае 3х 4рёх уровней или нет .....???


--------------------
---------------------------------------------
Заранее спасибо!!!
PM WWW ICQ   Вверх
skyboy
Дата 13.5.2008, 22:50 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



ну, это уж тебе решать.
однако смею заметить, что у тебя один из самых неоптимальных алгоритмов выбора.
если выбираешь все, то лучше выбери все одним запросом, а потом уже построй на стороне клиента.
если выбираешь не все, а по некоему условию, используй nested sets или materialized path.
PM MAIL   Вверх
gribikc
Дата 14.5.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 9.2.2003

Репутация: нет
Всего: нет



спасибо


--------------------
---------------------------------------------
Заранее спасибо!!!
PM WWW ICQ   Вверх
gribikc
Дата 18.5.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 9.2.2003

Репутация: нет
Всего: нет



Код

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [parent_id] => 0
                    [name] => DVD
                )

            [1] => Array
                (
                    [id] => 2
                    [parent_id] => 0
                    [name] => Книги
                )

            [2] => Array
                (
                    [id] => 3
                    [parent_id] => 0
                    [name] => Спорт товары
                )

            [3] => Array
                (
                    [id] => 4
                    [parent_id] => 0
                    [name] => Музыка
                )

        )

    [1] => Array
        (
            [4] => Array
                (
                    [id] => 5
                    [parent_id] => 1
                    [name] => ЗАРУБЕЖНОЕ КИНО
                )

            [5] => Array
                (
                    [id] => 6
                    [parent_id] => 1
                    [name] => ОТЕЧЕСТВЕННОЕ КИНО
                )

            [6] => Array
                (
                    [id] => 7
                    [parent_id] => 1
                    [name] => МУЗЫКА НА DVD
                )

        )

    [5] => Array
        (
            [7] => Array
                (
                    [id] => 8
                    [parent_id] => 5
                    [name] => боевики
                )

            [8] => Array
                (
                    [id] => 9
                    [parent_id] => 5
                    [name] => мелодрамы
                )

        )

    [8] => Array
        (
            [9] => Array
                (
                    [id] => 15
                    [parent_id] => 8
                    [name] => новые
                )

            [10] => Array
                (
                    [id] => 16
                    [parent_id] => 8
                    [name] => старые
                )

        )

)

помогите вывести дерево из такова массива туплю нечего не понимаю....


--------------------
---------------------------------------------
Заранее спасибо!!!
PM WWW ICQ   Вверх
gribikc
Дата 18.5.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 9.2.2003

Репутация: нет
Всего: нет



Код

function get_tree(&$arr,$parent_id=0,$prefix="") {
    global $out;
    for($i=0;$i<count($arr[$parent_id]);$i++){
        $out.=$prefix.$arr[$parent_id][$i]['name']."<br>";
        get_tree($arr,$arr[$parent_id][$i]['parent_id'], $prefix."&nbsp;&nbsp;");
    }
    return $out;
}

вод функция но почемуто не работает(((


--------------------
---------------------------------------------
Заранее спасибо!!!
PM WWW ICQ   Вверх
gta4kv
Дата 18.5.2008, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



PM MAIL   Вверх
gribikc
Дата 19.5.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 9.2.2003

Репутация: нет
Всего: нет



gta4kv, спасибо

но всёже что не так в данной функции?


--------------------
---------------------------------------------
Заранее спасибо!!!
PM WWW ICQ   Вверх
dm9
Дата 21.5.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: нет
Всего: 137



См. топик Работа с MySQL. Деревья + комментарии к нему.

Цитата(gribikc @  19.5.2008,  12:12 Найти цитируемый пост)
но всёже что не так в данной функции?

Попробуйте подумать ещё раз сначала. Там всё совсем плохо. От начала и до конца. Надо понять, что перебираем, что передаём ниже в рекурсивный вызов...


PM MAIL ICQ   Вверх
skyboy
Дата 21.5.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



в принципе, как хотите, но мне непонятно, зачем вам рекурсивная функция, когда можно обойтись без рекурсии?
раз уж на то пошло, рекурсивная функция не построит граф, только дерево - и никаких циклов.
PM MAIL   Вверх
gribikc
Дата 21.5.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 9.2.2003

Репутация: нет
Всего: нет



skyboy, мне надо вывести а не построить подскажи как я в этом нуб


--------------------
---------------------------------------------
Заранее спасибо!!!
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.