Вывод дерева в MySQL
Данная тема уже заезжена до протертых шин, но все таки какой программист с этим не сталкивался. Я лишь покажу один пример, основанный на базе, рекурсия с выполнением каждого раза запроса может оказаться ненароком очень долгой, поэтому сначала забросим все данные одним запросом в массив, а рекурсией будем пробегаться по нему.
Понеслася.
Определимся с чем будем иметь дело. Примерная табла будет содержать как минимум 3 столбца.
CREATE TABLE Tree (
`ID` INT NOT NULL AUTO_INCREMENT,
`ParentID` INT NOT NULL,
`Title` VARCHAR(255) NOT NULL,
PRIMARY KEY(`ID`)
)
Ну и что нам теперь делать? Осталось написать скрипт который бы обработал эту таблицу и вывел дерево на экран. Как и было сказано, для начала надо выполнить запрос на всю базу.
SELECT ID, ParentID, Title FROM Tree;
Результат собираем следующим образом. Если вы представляете себе двухмерный массив то без труда поймете следующий код.
while($row = mysql_fetch_assoc($res)){
$tree[$row['ParentID']][$row['ID']] = $row['Title'];
}
Чтобы посмотреть что же лежит в массиве можно просто выполнить print_r($tree) и будет вам счастье! Для чего я заделал $row['ID'] на второй уровень? Для связи с ParentID, действуем таже как если бы мы просто выполняли запросы в рекурсии, но мы же орудуем массивами...
function ShowTree($tree, $pid=0){
echo "";
foreach( $tree as $id=>$root){
if($pid!=$id)continue;
if(count($root)){
foreach($root as $key => $title){
echo "- {$title}";
if(count($tree[$key]))ShowTree($tree,$key);
}
}
}
echo "
";
}
Step By Step
Я пробегаюсь по всему Parent дереву. Если помните то в $root будет содержаться массив с содержимым всех полей с этим ParentID. Чтобы не повторится с выводом полей сделаем затычку $pid!=$id для следующего вызова рекурсии. Осталось лишь пробежаться по содержимому, для чего запускаем второй foreach. Немного отступлюсь. чтобы не было недоразумений, типа а чего скрипт ругается на foreach, прямо перед ним делаю проверку на количество содержимого массива. Естественно, foreach обрабатывает массив и к тому же не "нулевый"!
Возвращаемся.
Именно во втором цикле надо вызывать рекурсию, для чего сначала проверим , а есть ли потомки с таким родителем.
if(count($tree[$key]))ShowTree($tree,$key);
В принципе вот и все. Согласитесь что несложно, а времени скрипта экономится , дай БожЕ. И применений куча. Так что считай что если ты прочитал и вник первый раз, то жму руки а сам сваливаю до дому.
|
Данная тема уже заезжена до протертых шин, но все таки какой программист с этим не сталкивался. Я лишь покажу один пример, основанный на базе, рекурсия с выполнением каждого раза запроса может оказаться ненароком очень долгой, поэтому сначала забросим все данные одним запросом в массив, а рекурсией будем пробегаться по нему. |
Вывод дерева в MySQL, Вывод дерева, MySQL |
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2026-05-15 » Как происходит утечка данных и как с этим бороться
- 2026-05-15 » B2B-сайт не продает: 5 ошибок UX, которые превращают лидов в призраков
- 2026-05-15 » Как выбрать качественный и недорогой хостинг: правда о дешёвых тарифах
- 2026-05-15 » Зачем сайту SSL-сертификат и как получить его бесплатно прямо сейчас?
- 2026-05-15 » 7 причин медленной работы сайта: почему уходят клиенты и как это исправить
- 2026-05-07 » Будущее без cookies: альтернативные решения для идентификации пользователей
- 2026-05-07 » Маркетинговые приемы: как механики продаж управляют выбором покупателя
- 2026-05-07 » Чем грозят дублированный контент и пустые страницы: ошибки, которые убивают ваш трафик
- 2026-05-07 » Open Source — что должен знать бизнес перед тем, как взять чужой код
- 2026-05-07 » ИИ и Google: как 1446 сайтов вылетели из поиска и как вам избежать подобного
- 2026-05-03 » ГИГАНТЫ ОХОТОМОРЬЯ: Как исполнить мечту и поплавать с китами на краю Земли
- 2026-05-02 » Почему люди всё реже «гуглят» и как ИИ-поиск меняет интернет
- 2026-05-02 » Как дизайн формирует восприятие бренда?
- 2026-05-02 » Сайты и приложения проверят использование VPN у россиян
- 2026-05-02 » Как предотвратить утечку информации в компании
- 2026-05-02 » Как влиять на иррациональное поведение покупателей
- 2026-04-17 » Дырявая воронка продаж: где вы теряете клиентов и как это лечит CRM
- 2026-04-17 » ИИ‑контент против человека: как найти золотую середину
- 2026-04-17 » Сайты 2026–2027: почему побеждают простые и быстрые
- 2026-04-17 » Формы сбора согласий на сайте
- 2026-04-17 » Безопасность сайта для малого бизнеса: что нужно знать, чтобы не взломали и не оштрафовали
- 2026-04-16 » Парадокс выбора: почему изобилие вариантов вредит вашей прибыли
- 2026-04-16 » Когнитивная перегрузка vs. UX: почему ваш сайт утомляет мозг пользователя
- 2026-04-16 » Эра Zero-Click: как генеративная выдача изменила путь клиента
- 2026-04-16 » Как адаптировать тексты на сайте под голосовой поиск
- 2026-04-16 » Почему ваш сайт тормозит — и вы теряете клиентов
- 2026-04-08 » Микрофронтенды — максимально простое объяснение
- 2026-04-08 » Чат-боты или живые менеджеры: что выбрать для эффективного продвижения в 2026 году?
- 2026-04-08 » Почему ваш сайт не видно в поисковой выдаче?
- 2026-04-08 » Персонализация в маркетинге: 7 примеров, которые работают
Постановка целей, приближение к ним день за днем и, наконец, их достижение — это и есть ключ к счастью Трейси Брайан - - современный американский профессиональный лектор-преподаватель |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.

Мы создаем практически любые сайты от продающих страниц до сложных, высоконагруженных и нестандартных веб приложений! Наши сайты это надежные маркетинговые инструменты для успеха Вашего бизнеса и увеличения вашей прибыли! Мы делаем красивые и максимально эффектные сайты по доступным ценам уже много лет!
Комплексный подход это не просто продвижение сайта, это целый комплекс мероприятий, который определяется целями и задачами поставленными перед сайтом и организацией, которая за этим стоит. Время однобоких методов в продвижении сайтов уже прошло, конкуренция слишком высока, чтобы была возможность расслабиться и получать \ удерживать клиентов из Интернета, просто сделав сайт и не занимаясь им...
Мы оказываем полный комплекс услуг по сопровождению сайта: информационному и техническому обслуживанию и развитию Интернет сайтов.
Контекстная реклама - это эффективный инструмент в интернет маркетинге, целью которого является увеличение продаж. Главный плюс контекстной рекламы заключается в том, что она работает избирательно.