Webový zápisník | JAZBY.net
Vítejte na mém webu!

PHP seriál - Hiearchické (stromové) zobrazování záznamů - díl 1.

Jistě každý z nás co programujeme se již někdy setkal s problémem vypisovaní hierarchických stromových struktur, uložených v relačních databázích jako například MySQL. Postupů zobrazení a editace těchto stromů je nepřeberné množství a na internetu se toho dočtete značně. Napsal jsem vlastní třídu, kterou vám zde v několika dílech postupně celou představím a následně nabídnu ke stažení. Zastávám názor že se nic nemá programovat zbytečně dvakrát a tak se snažím dávat svoje poznatky k dispozici.

Příklad mojí třídy budu interpretovat na příkladu vypisování menu. Dopředu nikdo neví, kolik bude úrovní.
Třída obsahuje funkce:

  1. vypsání rozbaleného stromu
  2. vypsání stromu ve formě menu
  3. vkládání nových prvků
  4. přesouvání větví stromu
  5. mazání prvků stromu
  6. vypisování nadřazených rodičů oproti aktuální pozici



V rámci třídy se předpokládá již nadefinované připojení k mysql databázi.
Tak a nyní k tématu. V první část si vytvoříme tabulku a naplníme ji zkušebními daty. 

CREATE TABLE `stromecek` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`name` varchar( 100 ) CHARACTER SET latin2 default NULL ,
`id_father` smallint( 6 ) NOT NULL default '0',
`parents_list` text CHARACTER SET latin2 NOT NULL ,
`section` int( 11 ) NOT NULL ,
`statestamp` datetime NOT NULL ,
`stateuser` char( 3 ) NOT NULL ,
`state` int( 11 ) NOT NULL ,
PRIMARY KEY ( `id` )
)


Vysvětlení struktury:

  • id Automatický klíč
  • name Název položky
  • id_father Klíč nadřazené položky (vyšší úrovně)
  • parents_list Seznam všech nadřazených uzlů až po nejvyšší úroveň
  • section Kategorie do které menu patří
  • statestamp Datum a čas poslední aktualizace záznamu
  • stateuser Kód uživatele která změnu provedl (je to myšleno v rámci celkové administrace)
  • state stav záznamu. 1 – aktivní, 4 – smazaný. Záznamy se namažou, fyzicky ale pouze se určuje příznak



nyní vložíme testovací data

INSERT INTO `stromecek` (`name`, `id_father`, `parents_list`, `section`, `statestamp`, `stateuser`, `state`) VALUES
( 'Menu 1', 0, '1', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Menu 2', 3, '3,2', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Menu 3', 0, '3', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Menu 4', 0, '4', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 2-1', 2, '3,2,6', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 2-2', 2, '3,2,7', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 2-3', 2, '3,2,8', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 2-2-1', 7, '3,2,7,9', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 4-1', 4, '4,10', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 4-2', 4, '4,11', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 4-3', 4, '4,12', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 4-3-1', 6, '3,2,6,13', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 4-3-2', 12, '4,12,14', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 4-3-1-1', 13, '3,2,6,13,15', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Menu 2', 0, '18', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 4-2-1', 11, '4,11,19', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Submenu 4-2-1-1', 19, '4,11,19,20', 1, '2008-03-31 16:11:53', '1X', 1),
( 'Menu 5', 0, '25', 1, '2008-03-31 16:11:53', '1X', 1);



V příštím díle začnu postupně zveřejňovat jednotlivé funkce.

««« Předchozí text: PHP seriál - Import dat do databáze pomocí konzole

autor: Honzííík | Pondělí 31. 03. 2008, 16.09 | tisk | PHP | 0 komentářů | 482x

Komentáře k textu

Rss komentářů tohoto textu - Formulář pro nový komentář

K textu nebyl napsán žádný komentář.

Přidej komentář!

  Gravatar povolen.



Kliknutím vložíš: Vloďż˝ smajla :-) Vloďż˝ smajla :-( Vloďż˝ smajla ;-) Vloďż˝ smajla :-D Vloďż˝ smajla 8-O Vloďż˝ smajla 8-) Vloďż˝ smajla :-? Vloďż˝ smajla :-x Vloďż˝ smajla :-P Vloďż˝ smajla :-|
Příspěvěk je formátován Texy! syntaxí. Není povoleno HTML, odkazy se převádějí automaticky. Pokud se komentář nezobrazí, neprošel bezpečnostní kontrolou a já jej musím schválit přes administraci. Nevkládej jej prosím znovu.
Jsem robot?

Stručně o mně

Autor
Ahoj, je mi 22 let, na netu vystupuji pod přezdívkou JAZBY, moje povolání je ... php programátor, zajímám se o počítače, baví mě tvorba stránek, bydlím v Praze a tady si krátím svůj dlouhý čas tím že si tady bloguji. Zajímá-li tě to, přeji příjemnou zábavu.

Nové komentáře

ryaeStpkiuawHn oGQapLKcPjXvAXNCSS milena
Online 1 člověk

Vydané články

PHP seriál
ALBION Group