ПредишенСледващото

Изграждане на дърво на категориите в PHP

Днес ще ви покажа как да прави PHP и MySQL за създаване на йерархична дърво.

Най-общо те са изградени, когато е възможно. Основното нещо, за да го изгради и прилага.

Създайте таблица чрез изпълнение на SQL заявка в PHPMyAdmin:

Сега трябва да напълним записите в таблиците. В резултат на това, той трябва да получи около тази таблица:

Изграждане на дърво на категориите в PHP

Можете да попълните заявката за тест таблица:

С база данни на всички! След това отидете до образуването на секции от дървото.

Ние правим искане и образуват удобен масив за по-нататъшна работа.

Кой ще строи дървото. За изграждането ще се използва рекурсивна функция.

Йерархично дърво ще има следната структура:

Създаване на рекурсивни функции build_tree (). Тя ще изградим йерархично дърво абсолютно всеки гнездене.

За да се изгради едно дърво, сложи това в кода си:

Така че в две стъпки, която сме създали йерархична дърво секции на сайта, без значение колко много раздели!

За да се изгради такава дърво тече build_tree в функция на следните параметри:

Благодаря ви много за отговора.
Ако е възможно, още един въпрос. И в този случай, за да създадете връзки към директории? В базата данни да се направи пълния път, като рекорд за раздел 1.1.1
"Razdel_1 / Podrazdel_1.1 / Podrazdel_1.1.1 /"
или по-добре да се направи запис, само на този подраздел, т.е. "Podrazdel_1.1.1". Ако последното, тогава как да ги комбинирате по-късно?

Maxim Nikifo $ LastName = htmlspecialchars ($ _ POST [ 'LastName']);
$ Име = htmlspecialchars ($ _ POST [ 'име']);
$ Етаж = $ _POST [ 'етаж'];
$ Email = mysql_real_escape_string ($ _ POST [ 'имейл']);
$ Парола = md5 ($ _POST [ 'парола']);
$ Телефон = $ _POST [ 'телефон'];
$ Data = $ _POST [ 'данни'];
$ Държава = $ _POST [ 'държава'];
$ Област = $ _POST [ "регион"];
$ City = $ _POST [ 'град'];
$ Rdate = дата ( "Y-т-г Н: I: S");

това е готино, разбира се. Но тя работи само ако имате повече от 100 търсачки

Имам в базата данни 40000 записи. Този метод не е от значение, тъй като изчислението е почти 10 минути. Нито един човек не се налага да чакате, когато кликнете върху една страница, когато е имало "чудо" и сървъра изчислява то.

Попитайте защо толкова много? Трябва да се изгради дърво региони - градове. схема WORLD - ДЪРЖАВА - Регион (щат / окръг) - селище. Това не би заемат много място, потомците на крие във вложено списък на родителите, и показва само чрез натискане на родителя (списъкът се разкрива).

Как да се реши този проблем, аз все още не са изобретили, някакви идеи?

Е, в рамките на "глобален проблем" и е необходимо "глобален сървър".
Като цяло, не е нужно рекурсия тук. Вие сте известен разкрой дълбочина - три (свят, държава, регион). Така правят въз основа на гнездене.

Винаги трябва да се направи избор на информация е това, което е необходимо на потребителя. Аякс технология ви помогне.
Можете да опитате разделен на етапи, използващи Аякс. Изберете първия континент (по желание отива Аякс-молба с идентификационния номер на континента и връща списък на страните, го поставете в sleduyschy selest), при избора на страната вече натоварени райони и т.н. Така че какви са изискванията са много по-ниски, и няма да има образци от безполезна информация на потребителя.

Най-реално и разбираемо да се изгради едно дърво на всички, които се срещнаха преди. Благодарим Ви!

Благодаря ви. много полезно)

Благодаря за статията. Почти това, което исках, но не мога да се реши проблем с страниране. Масивът се формира почти правилно, самата дисплеи функция са отрязани, се дължи на факта, че някои елементи, които не присъстват в масива родител. Най-малко natolknite как да се реши проблема.

Подраздел 2 -> подраздел 2.1 -> подраздел 2.1.2

И въпреки факта, че build_tree ($ котки, 2); това показва, всичко е наред, но не ми харесва, че е невъзможно да се изчисли helpmi pliz.

Благодарим Ви! Много полезно нещо, но се интересуват от един въпрос.

раздел 1
-раздел 1.1
1.1.1-раздел
-раздел 1.2
раздел 2
-раздел 1.1
-раздел 1.2
раздел 3
-раздел 3.1

и ние искаме да се премахнат-раздел 1.1 в този случай раздел раздел 1.1.1, и всичките му наследници ще трябва да бъде изместена до ниво и трябва да могат да:

раздел 1
-раздел 1.1.1
-раздел 1.2
раздел 2
-раздел 1.1
-раздел 1.2
раздел 3
-раздел 3.1

След това решихме да се премахне, раздел 2 и ние трябва да притежава:

раздел 1
-раздел 1.1.1
-раздел 1.2
раздел 1.1
раздел 1.2
раздел 3
-раздел 3.1

моля да ми кажете необходимите заявки база данни или логика в PHP. Благодаря ви!

Аладин, за визуален тест код:

Здравейте Максим съжалявам за глупавия въпрос, но как дървото, за да се определи дълбочината Трябва да 5 нива и повече

Дали е възможно да се предпише стиловете за това и да направи един акордеон? :)

и как да се разгърне целия бранш?
Например имам 3 нива на вмъкване
С натискането на първо ниво е преминал ID = 1, как мога да проверя дали го има потомци майки, които ще показват информация
I извод използване Аякс

О, и за изход пробата:

Юра,
Дайте на структурата на таблиците в базата данни

Aibol,
празно 03 и 05 и един от вас назад

Как да добавите клас CSS. които биха искали да се отбележи, че тези изделия, които имат подточки, или поне +/-

Добър ден!

Свързани статии

Подкрепете проекта - споделете линка, благодаря!