За последние 24 часа нас посетил 23591 программист и 1725 роботов. Сейчас ищут 758 программистов ...

деревообразный вывод данных

Тема в разделе "PHP для новичков", создана пользователем Jeck111, 1 окт 2008.

  1. Jeck111

    Jeck111 Активный пользователь

    С нами с:
    27 июл 2008
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Украина
    Здравствуйте уважаемые, помогите с проблемкой пожалуйста:
    Мне необходимо вывести данные в виде дерева, попытался сделать так:

    PHP:
    1. <?php
    2. $result= mysql_query ("SELECT * FROM oborud WHERE parent = '0'",$db);
    3. $myrow= mysql_fetch_array ($result);
    4.  
    5. do
    6. {
    7.     printf ("<p><a href = view_uch.php?parent=%s>%s</a></p>",$myrow['id'], $myrow['name']);
    8.  
    9.     $result1= mysql_query ("SELECT * FROM oborud WHERE parent = '$myrow[id]'",$db);
    10.     $myrow1= mysql_fetch_array ($result1);
    11.     do
    12.     {
    13.  
    14.         printf ("<p class='uch'><a href = view_uch.php?parent=%s>%s</a></p>",$myrow1['id'], $myrowob1['name']);
    15.  
    16.     }
    17.     while ($myrow1= mysql_fetch_array ($result1));
    18.  
    19. }
    20. while ($myrow= mysql_fetch_array ($result));
    21. ?>
    но так выводится только то количество "веток", которое я пропишу, а нужно до бесконечности чтобы, сколько есть данных столько что б и выводилось.
     
  2. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    про себя: ну и стиль, на чём прогить учился (это моё субъективное, забей)


    совет: достаточно одной выборки из базы. выбирай всё и дальше гугли по слову рекурсия.


    ps: хотя можно конечно изгильнуться и без рекурсивно-вызываемых функция, но думаю это лишнее ))
     
  3. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    nested sets
     
  4. Jeck111

    Jeck111 Активный пользователь

    С нами с:
    27 июл 2008
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Украина

    та не научился еще, в этом вся соль, только-только постигаю азы. А можно попросить, если не затруднит показать свой вариант, как бы выодил то что вывел я? мне будет полезно, пожалуйста.
     
  5. GudGuy

    GudGuy Активный пользователь

    С нами с:
    14 июн 2007
    Сообщения:
    909
    Симпатии:
    0
    Адрес:
    Москва
    http://phpclub.ru/faq/Tree?v=w5u
    там есть всё. и совет - сначала данные лучше подготовить, а потом выводить;)
     
  6. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    Jeck111
    про стиль - это я например про стиль записи циклов.. do { } while :)
    или вывод данных printf'ом )
    ну это грю, субъективно

    __

    про свой вариант. что-то типа этого. извини, не проверял. если интересно - сам проверь. не будет работать - разберёмся. будут вопросы по скрипту - тоже задавай.

    Код (Text):
    1.  
    2. <?php
    3.    
    4. function getTree($parent_id = 0)
    5. {
    6.    global $arr;
    7.  
    8.     if(isset($arr[$parent_id]))
    9.     {
    10.         foreach($arr[$parent_id] as $myrow)
    11.         {
    12.             echo "<p><a href = view_uch.php?parent={$myrow['id']}>{$myrow['name']}</a>\n";
    13.             getTree($myrow['id']);
    14.             echo "</p>";
    15.         }
    16.     }
    17. }
    18.  
    19.  
    20. $result = mysql_query ("SELECT * FROM oborud ORDER BY parent_id ASC", $db);
    21. $myrow = mysql_fetch_array ($result);
    22.  
    23. $arr = array();
    24. while ($myrow = mysql_fetch_array ($result))
    25. {
    26.         $arr[$myrow['parent_id']][] = $myrow;
    27. }
    28.  
    29. getTree();
     
  7. Jeck111

    Jeck111 Активный пользователь

    С нами с:
    27 июл 2008
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Украина
    Здравствуйте еще разок на этой теме, пишу здесь потому что все также занимаюсь деревьями.
    У меня вот какой вопрос: мне надо увеличить на 2 в базе все значения, которые я указываю. Пробую вот так:

    PHP:
    1. $result1 = mysql_query ("UPDATE kw3_tree SET left_key = '{left_key+2}', right_key = '{right_key+2}' WHERE left_key >'$right_key'");
    Вместо +2, обнуляются все значения, которые я указываю. Почему так? я вроде догадался, потому что он присваивает не имеющееся значене увеличинное на 2, а присваивает, именно left_key+2 и right_key+2 соответсвенно, а вот как мне обновить, так как надо мне не знаю, в этом и заключается вопрос.
     
  8. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    PHP:
    1. <?php
    2. $result1 = mysql_query ('UPDATE kw3_tree SET left_key = left_key+2, right_key = right_key+2 WHERE left_key >'.(int)$right_key);
     
  9. Jeck111

    Jeck111 Активный пользователь

    С нами с:
    27 июл 2008
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Украина
    Спасибо большое всем кто откликнулся.
     
  10. kostyl

    kostyl Guest

    Скажет кто что лучше реализовать дерево или паттерн компоновщик?
     
  11. Что выше, теплое или мягкое?
     
  12. kostyl

    kostyl Guest

    флоппик
    Имеется в виду то, что древовидная функциональность в основном обеспечивается, в первом случае, структурой базы данных, а во втором - архитектурой объекта...
     
  13. Я не знаю, что имеешь ввиду ты, но эти термины имеют четкое значение. А ничем абсолютно не связаны между собой.
     
  14. kostyl

    kostyl Guest

    флоппик
    Абстрагируйся :)
     
  15. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    http://ooad.asf.ru/Pattern.aspx?IdKat=7&IdPat=41
     
  16. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Jeck111
    Чё опять Евгений Попов?
     
  17. kostyl

    kostyl Guest

    Sergey89
    Это всё понятно, но можно данные хранить в виде дерева и в виде отличным от дерева
     
  18. Можно абстрагироватся до потери сознания, но связи между выводом дерева и паттерном проектирования все равно нет.
     
  19. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    kostyl
    жошьь =))
     
  20. Jeck111

    Jeck111 Активный пользователь

    С нами с:
    27 июл 2008
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Украина
    с чего то ж надо начинать..
     
  21. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    с чего-то нормального...
    ты вообще видел его рожу? почему думаешь у него она такая хитрая?
    Зы. http://evgeniypopov.e-luge.net/
     
  22. Jeck111

    Jeck111 Активный пользователь

    С нами с:
    27 июл 2008
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Украина
    ну тогда с тебя один совет:): хорошая книга по php на твой взгляд. сейчас читаю "Разработка web-приложений на PHP и MySQL" Лаура Томсон, Люк Веллинг., тяжеловато идет, но идет :)
     
  23. Jeck111

    Jeck111 Активный пользователь

    С нами с:
    27 июл 2008
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Украина
    kostyl
    спасибо
     
  24. Jeck111

    Jeck111 Активный пользователь

    С нами с:
    27 июл 2008
    Сообщения:
    24
    Симпатии:
    0
    Адрес:
    Украина
    Ну уже с чего начал с того и получилось, не вернуть ведь.
    Главное что не собираюсь останавливаться, стараюсь развиваться..