beállítások
Adatok tárolása fa szerkezetben (PHP)
Általános | 2011/07/14 | írta: ADMIN

Biztos sokan szerettünk már például termék kategóriákat eltárolni jól lekövethető és gyorsan kikérdezhető módon. Egy hasznos konvertert mutatunk be mely a hagyományos fa szerkezetű adattárolást átalakítja olyan formátumra, hogy a kikérdezést rekurzó nélkül megoldhassuk, ezzel jelentős erőforrásokat megspórolva az adatbázis szervernek.


Hagyományosan a legtöbben a következő táblaszerkezetet használjá fa szerkezetek tárolására:
id name parent_id created
1 Kateg1 0 dátum
2 Kateg2 1 dátum
3 Kateg3 3 dátum
Ebből látható, hogy a parent_id mező hivatkozik mindig a szülő rekordra. Ez mind szép és jó, mind ameddig  kevés adatunk van a táblában, ugyanis gyorsan végig tudja pörgetni a mysql általában a rekurzív függvényünket, mely a példánkban is látható.
Azonban amint több ezer sorunk van a táblában, tehát egy jó nagy webshopot akarunk felépíteni például, akkor erősen gondolkodunk kell az optimalizáláson. Ehhez nem kell mást tennünk, mint még két oszlopot hozzácsapni az eredeti táblázatunkhoz, például lft és rght néven.

id name parent_id lft rght created
1 Kateg1 0 1 6 dátum
2 Kateg2 1 2 5 dátum
3 Kateg3 3 3 4 dátum

A két mező fogja meghatározni, hogy egyes kategóriába mennyi alkategória van, és sokkal egyszerűbb lesz a lekérdezésünk is. Azonban most ebbe nem megyek bele, az eddig legjobb cikk az alábbi linken olvasható angol nyelven, mely ezt a témát boncolgatja emberi nyelven.



Most lássuk akódunkat, mely az eredeti táblánkat átalakítja:
function rebuild_tree($parent, $left) 
{
    $right = $left + 1;

    $result = mysql_query('SELECT parent_id, id FROM studio_webshop_categories WHERE parent_id = "'.$parent.'";'); 
    while ($row = mysql_fetch_array($result)) 
    {
        $right = rebuild_tree($row['id'], $right);
    }

    mysql_query('UPDATE studio_webshop_categories SET lft = '.$left.', rght = '.$right.' WHERE id = "'.$parent.'";');

    return $right+1;
}

 rebuild_tree(0, 1) ; //kiadjuk a parancsot a fa újraépítésére

noavatar
Vendég
2011/08/17 20:17
 
A kód felett hibásan írtátok akódunkat:)

Egy blog fejlesztőknek és grafikusoknak

0
Bár sajnos a PrettyLoader oldalt már nem frissítik mégis hét év több mint 100 laoder design-ját lehet megtekinteni ...
2
Egy új oldal indításakor igen nagy szerepet játszik az, hogy a Google jól térképezze fel az oldalunkat és pontosan ...
0
A Google már pár év óta nyilvánosságra hozza az évvégén, hogy mik is voltak azok a kifejezések, amik az adott évben ...

Hírek a web világából

A netezés károsítja a környezetünket

Vajon belegondoltunk abba, hogy a világhálón töltött idő hány százalékát töltjük el ésszerű tevékenységekkel ...

A Microsoft hátráltatja a többi böngészőt

A Windows RT, vagy az új operációs rendszer tabletes verziójának felhasználói számára is elérhetővé kellene tenni ...

Honlap referencia kereső

Cégünk által készített weblapokat eddig ennyien látták:
45 283 871
ebből a mai napon 26 888 látogató volt

Miért a TotalStudio?

Nálunk Ön az első
Az Ön elképzelései és a mi kreativitásunk illetve szaktudásunk a garancia arra, hogy honlapja vagy grafikai megjelenése olyan legyen amilyenre mindig is vágyott.

Több éves tapasztalat
Cégünk munkatársai több mint kilenc éve foglalkoznak webfejlesztéssel, informatikával és szerverüzemeltetéssel, ezen idő alatt mindenre felkészültünk!

Verhetetlen minőség
Munkánkban nem ismerünk kompromisszumot! Mindig a legmagasabb minőségre törekszünk. A magunkkal szemben támasztott maximalizmus és a legújabb technológiák használata garantálja, ügyfeleink elégedettségét.

Gyorsaság és megbízhatóság
Nálunk nem kell heteket várni, hiszen honlapja akár öt munkanapon belül is elkészülhet a szerződés aláírásától, de a gyorsaság soha nem megy a minőség rovására!

Csatlakozzon Facebook-on

Sablon ajánlatunk

Sablon ajánlatunk

Az oldalt a Total Studio Kft. üzemelteti. Minden jog fenntartva.
Honlapkészítés, tárhely, domain, banner, webdesign, grafika