Kategóriafa létrehozása php

Kategóriafa létrehozása php

Ma elmondom, hogyan hozzon létre egy hierarchikus fa PHP-ben és MySQL-ben.

Általában épülnek fel, ahol csak lehetséges. A legfontosabb dolog helyes felépítése és alkalmazása.

Hozzon létre egy táblát a PHPMyAdmin SQL lekérdezésének végrehajtásával:

Most be kell töltenünk a táblázatot bejegyzéssel. Ennek következtében a következő táblázatnak így kell kinéznie:

Kategóriafa létrehozása php

A teszttáblát lekérdezéssel töltheti ki:

Az adatbázisban mindent! Ezután megyünk a partíciók megalakulásához.

Készítünk egy kérelmet, és kényelmes tömböt alkotunk a további munkákhoz.

Most építünk egy fát. Az építéshez rekurzív függvényt használunk.

A hierarchikus fa rendelkezik ezzel a szerkezettel:

Létre kell hozni a build_tree () rekurzív függvényt. Felépítené hierarchikus fát az abszolút fészkelésben.

Egy fa létrehozásához a kódot írjuk:

Tehát két lépésben létrehoztunk egy hierarchikus fát a szakaszokból, és nem számít, hány szekció van!

Az ilyen fa létrehozásához futtassa a build_tree függvényt a következő paraméterekkel:

Nagyon köszönöm a választ.
Ha lehetséges, még egy kérdés. És hogyan készít linkeket a könyvtárakhoz? Az adatbázisban teljes elérési utak, például az 1.1.1
"Section_1 / Section1.1 / Section.1.1.1 /"
vagy jobb, ha csak erre az alszakaszra rögzítjük, azaz. "Podrazdel_1.1.1". Ha a második, akkor hogyan lehet őket kombinálni?

Maxim Nikifo $ LastName = htmlspecialchars ($ _ POST ['LastName']);
$ name = htmlspecialchars ($ _ POST ['name']);
$ floor = $ _POST ['floor'];
$ email = mysql_real_escape_string ($ _ POST ['email']);
$ password = md5 ($ _POST ['password']);
$ phone = $ _POST ['phone'];
$ data = $ _POST ['adat'];
$ country = $ _POST ['ország'];
$ region = $ _POST ['region'];
$ city = $ _POST ['city'];
$ rdate = dátum ("Y-m-d H: i: s");

Természetesen mindannyian hűvös. De csak akkor működik, ha nincs több mint 100 könyvtár

40 ezer rekord van az adatbázisban. Ez a módszer nem releváns, mivel a számítás közel 10 percet vesz igénybe. Senki nem fog várni egy oldal átmenetére, amikor "csoda" történik, és a kiszolgáló kiszámítja az IT-t.

Kérdezd meg, miért ilyen sok? Ki kell építeni a régiók fáit - városokat. a program keretében VILÁG - ORSZÁG - TERÜLET (állam / körzet) - település. Ez nem sok helyet foglal el, a leszármazottak a mellékelt szülők listáján rejtve maradnak, és csak a szülőre kattintva jelenik meg (a lista bővült).

Hogyan lehet megoldani ezt a problémát, még nem született ötlet?

Nos, a "globális feladatok" alatt globális szerverekre van szükségünk.
Általában nincs szükség rekurzióra. Ismered a fészkelés mélységét - három (világ, ország, régió). Tehát a fészkelésen alapul.

Mindig pontosan ki kell választania a felhasználó által igényelt adatokat. Technológia ajax, hogy segítsen.
A kijelölést szakaszokba lehet osztani ajax használatával. Először választja ki a kontinenset (az ajax-kérés a kontinens idével opcionális, és az országok listája visszaküldik, a következő selestbe kerül), amikor kiválaszt egy országot, már betölti a régiókat stb. Így a kérések sokkal kevesebb lesz, és nem lesz olyan minta, amelyre a felhasználónak nincs szüksége információra.

A legvalóságosabb és érthetőbb szerkezet egy olyan fa, amelyről már találkoztam. Köszönöm!

köszönöm. nagyon segített)

Köszönöm a cikket. Majdnem az, amit kerestem, de nem tudom megoldani a problémát lapozással. A tömb szinte tökéletesen alakul ki, maga a funkció körülmetélt formában jelenik meg, annak a ténynek köszönhetően, hogy bizonyos elemek nem szerepelnek a szülői tömbben. Legalább nyomja meg, hogyan oldja meg a problémát.

2. alszakasz -> 2.1 alszakasz -> 2.1.2. Alszakasz

Igen, és amíg az build_tree ($ macskák, 2); akkor mindent pontosan megmutat, de nem tudom számolni, hogyan működik, helplym pliz.

Köszönöm, Nagyon hasznos dolog, de egy kérdés érdekel.

1. szakasz
-1.1. Szakasz
1.1.1. Szakasz
-1.2. Szakasz.
2. szakasz
-1.1. Szakasz
-1.2. Szakasz.
3. szakasz
-3.1. Szakasz

és törölni szeretnénk az 1.1 szakaszt, ebben az esetben az 1.1.1 fejezetet és annak összes leszármazottait át kell váltani a szintre, és az alábbiaknak kell lenniük:

1. szakasz
-1.1.1. Szakasz
-1.2. Szakasz.
2. szakasz
-1.1. Szakasz
-1.2. Szakasz.
3. szakasz
-3.1. Szakasz

Továbbá úgy döntöttünk, hogy töröljük a 2. szakaszt, és meg kell kapnunk:

1. szakasz
-1.1.1. Szakasz
-1.2. Szakasz.
1.1. Szakasz
1.2. Szakasz.
3. szakasz
-3.1. Szakasz

Kérlek, kérjük, adja meg a szükséges kéréseket az adatbázisban vagy logikában PHP-ben. köszönöm!

Aladdin, a vizuális teszt kódja:

Jó napot Maxim elnézést a hülye kérdésért, amit a fa tett, és hogy hogyan kell meghatározni a mélységet, szükségem van 5 szintre és nem többre

Valamilyen módon regisztrálhatom ezt a stílust, és harmonikát készíthetek? :)

És hogyan kell telepíteni az egész ágat?
Például 3 szintes fészekelésem van
Amikor az első szintre kattintasz, az id = 1 átmegy, hogyan ellenőrizhetem, hogy van-e ilyen szülő olyan gyerekekkel, akik az adatokat elküldenék
Összefoglaltam az ajaxmal

Nos, a kimeneti minta:

Yura
Adja meg a táblák szerkezetét az adatbázisban

Aibol,
üres 03 és 05 és az egyik, amit vissza

És hogyan adhat hozzá egy css osztályt. akik szeretnék megemlíteni azokat az elemeket, amelyek rendelkeznek az alfejezetekkel, vagy legalább +/-

Kedves nappali!

Kapcsolódó cikkek