Иерархич. древо

Тема в разделе "PHP", создана пользователем LEXAlForpostl, 10 фев 2011.

Модераторы: latteo
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    740
    Симпатии:
    226
    Здравствуйте.
    Подскажите, пожалуйста, необходимо в БД mysql хранить данные, которые будут представленны в виде
    [​IMG]
    Причём у каждого название есть синонимы, т.е. вместе НазваниеX будет находится выпадающая меню с названиями.
    Вопросы:
    1). Какой структуры должна быть БД.
    2). Какая функция сможет выводить информацию в виде как указано на картинке выше?
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    А можно более детальное описание требований к базе? (желательно с жизненными примерами) А то Ваш вопрос можно обыгрывать по разному...
    Пока исходя и описанного Вами только такое пришло в голову:
    id | name | parent | synonym |
    1 | название1 | 0 | ширли::мырли |
    2 | название2 | 1 | трали::вали |
    3 | название3 | 1 | ёшки::морошки|

    ну а функция скорее всего foreach() хотя это могут быть и несколько функций одновременно...
     
  3. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    740
    Симпатии:
    226
    Структура БД подходит.
    Только как теперь её обрабатывать.
    Как из этой Бд вывести информацию ввиде древа.
     
  4. maxlibt

    maxlibt Создатель

    Регистр.:
    29 дек 2009
    Сообщения:
    33
    Симпатии:
    1
    Древавидная структура реализуется по средствам добавления в БД поля родителя, т.е.: есть поле с каким то индетификатором и ещё одно с идентификатором родителя. Надеюсь понятно выразился.
     
  5. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    740
    Симпатии:
    226
    Это я уже понял из 2го поста.
    Покажите, пожалуйста, на примере, как мне увидеть визуально информацию из БД в виде древа.
     
  6. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    ну например так:
    PHP:
    $parent_array=mysql_query("SELECT * FROM tab_1 WHERE `parent`='0'");
    while(
    $p_a=mysql_fetch_assoc($parent_array)){
    echo 
    $p_a['name']."<br>";
    $child_array=mysql_query("SELECT * FROM tab_1 WHERE `parent`='".$p_a['id']."'");
    while(
    $c_a=mysql_fetch_assoc($child_array)){
    echo 
    "--".$c_a['name']."<br>";
    }
    }
    Такой скрипт выведет чёто типа:
    корень1
    --подкорень1.1
    корень2
    корень3
    --подкорень3.1
    --подкорень3.2
    и т.д. но если нужно
    корень1
    --подкорень1.1
    ---подкорень1 подкорня1.1
    то тут немного мозги поднапрячь не помешает :)