Autor Zpráva
sparky
Profil *
Zdravím, chtěl bych se zeptat či odkázat na nějaký tutoriál (zatím jsem žádný užitečný nenašel), jak je v php řešeno routování stromové struktury. Příklad, mám stromové menu, které rekurzí vypíšu. Každá položka bude odkazovat na sebe (svou úroveň), příklad:
Polozka1 => url: www.domena.cz/polozka1
    Polozka1 => url: www.domena.cz/polozka1/polozka1
    Polozka2 => url: www.domena.cz/polozka1/polozka2
    Polozka3 => url: www.domena.cz/polozka1/polozka3
        Polozka1 => url: www.domena.cz/polozka1/polozka3/polozka1
        
Polozka2 => url: www.domena.cz/polozka2
    Polozka1 => url: www.domena.cz/polozka2/polozka1
    Polozka2 => url: www.domena.cz/polozka2/polozka2
    
Polozka3 => url: www.domena.cz/polozka3
    Polozka1 url: www.domena.cz/polozka3/polozka1    

V databázi bych měl tabulku s položkami menu a tabulku stránek. Tabulka stránek by uchovávala id položky menu, url stránky a odkaz na kontroler? Je to tak správně nebo se to řeší úplně jinak? Díky za odpověď.
nethor
Profil
O tutoriálu nevím, ale myšlenka je v podstatš správná, rekurzi používám také.
Jen je šikovnější propojit je obráceně; v tabulce menu uchovávat Id stránky. Tak jdou vytvořit v menu dvě cesty směřující na jednu stránku.
Zkráceně:
Menu:
CREATE TABLE `menu` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,    
  `IdPage` int(11) NOT NULL DEFAULT '0',     // číslo stránky
  `Text` text COLLATE utf8_czech_ci,            // text v menu
  `Parnt` int(11) NOT NULL DEFAULT '0',        // nadřazená položka menu
  `Order` int(11) NOT NULL DEFAULT '1',        // pořadí položky ve větvi
  `Display` int(1) NOT NULL DEFAULT '1',        // zobrazovat nebo ne
  PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

Page:
CREATE TABLE `page` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Title` text COLLATE utf8_czech_ci,                //  nastavení Meta
  `Description` text COLLATE utf8_czech_ci,     //  nastavení Meta
  `Address` text COLLATE utf8_czech_ci,        // adresa stránky
  `HtmlText` text COLLATE utf8_czech_ci,      // text stránky
  PRIMARY KEY (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;


Kromě rekurze lze menu řešit i 'traverzováním kolem stromu', tenhle přístup jsem ale nikde nepoužil.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0