Krásne horizontálne menu v php a mysql. Viacúrovňové menu v PHP a MySQL

Krásne horizontálne menu v php a mysql.  Viacúrovňové menu v PHP a MySQL
Krásne horizontálne menu v php a mysql. Viacúrovňové menu v PHP a MySQL

Ak vás zaujíma odpoveď na otázku, ako vytvoriť menu webovej stránky, tak ste na správnej adrese.

Pozrieme sa na vytvorenie dynamického menu v PHP, napísaného špeciálne pre programovanie figurín, ako aj pre tých, ktorí sú stále v nádrži.

Lekcia 3. Vytvorenie ponuky v php pre dynamickú webovú stránku - pre figuríny

Poďme vytvoriť budúci vzhľad našej webovej stránky. Aby sme to dosiahli, nakreslíme super krásnu webovú stránku vo Photoshope a rozrežeme ju na kúsky. Predstavme si, že hlavička, logo, menu a päta nie sú napísané slovami, ako v v tomto príklade, a to sú nádherne a farebne navrhnuté prvky webovej stránky.

Vytvorme si napríklad tri stránky a nazvime ich Sekcia 1, Sekcia 2, Sekcia 3

Tento text sa bude na rôznych stránkach líšiť, ale nebudeme sa s tým obťažovať a necháme ho tak, ako je na všetkých stránkach.

Začnime vytvárať webovú stránku v PHP.

1. Vyberte bloky hlavičky, loga, ponuky, päty do samostatných súborov s príponou php alebo html

header.html

logo.html

menu.html

footer.html

Pridajme súbor s týmto textom, aby sme ho videli na všetkých stránkach. Zavolajme mu text.html

Poznámka. Odteraz budem ďalšie záznamy viesť priamo v kartotéke. text.html

2. Vytvorme si šablónu pre náš web v PHP.

Aby sme to urobili, urobíme jednoduchú vec - uložíme skutočný súbor, ale s príponou php a vymažeme všetok textový obsah. Nie je to síce profesionálne, ale dá sa to pochopiť, ale všetko si skomplikujeme neskôr. Teraz je hlavnou vecou pochopiť princíp rozloženia.

3. Teraz nepotrebujeme súbor template.html.

Vďaka nemu máme predstavu, ako bude naša stránka vyzerať.

4. Naša šablóna je súbor template.php

Teraz do nej vložíme všetky prvky lokality pomocou príkazu include.

5. Vytvorme tri strany, ako sme to pôvodne chceli urobiť.

Sekcia 1, zavoláme 1.php

Sekcia 2, zavoláme 2.php

Časť 3, zavoláme 3.php

Ak to chcete urobiť, môžete použiť najjednoduchší príkaz uložiť ako...

Vysvetlím pre najmenších: otvorte súbor šablóna.php, potom stlačte uložiť ako... a uložte ho pod menom 1.php, zopakujte postup a uložte stránky lokality postupne 2.php, 3.php

Skončili sme s 3 stranami s rovnakým dizajnom. Stačí ho prilepiť namiesto súboru text.htmlďalší, doplnok rôzne obrázky alebo akékoľvek html kódy, skripty a obsah každej stránky budú jedinečné.

Pozor!

Ak súbor nie je vytvorený index.php pre hlavnú stránku potom v prehliadači zadaním adresy stránky neuvidíme samotnú stránku, ale iba adresárovú štruktúru (zoznam priečinkov).

Môžete sa pozrieť do Denveru a presvedčiť sa na vlastné oči. Opravme situáciu - vytvorte súbor index.php a bez ďalších okolkov zavolajte Domov. Zároveň si vytvoríme súbor text-home.html a pomocou príkazu zahŕňajú prilepte ho na ten, ktorý sme práve vytvorili domovskej stránke stránky.

6. Ako zobraziť webovú stránku v php?

Len neuvidíme, čo sa stalo. Toto už nie je šablóna s príponou html.

Ale tiež nie je problém. Potrebujeme vlastné, t.j. lokálny server na počítači. Aby sme to dosiahli, nainštalujeme Denver a pozrieme sa na výsledok našej práce v prehliadači bez toho, aby sme museli byť online.

Teraz je to poradie. Zadal som adresu stránky a videl som všetko, čo bolo práve vytvorené, v normálnej forme s dizajnom.

Teraz sa pozrime na ponuku PHP stránky.

1. Otvorte súbor menu.html a premeňte sekcie 1, 2 a 3 na odkazy na stránke. Odkazy v PHP sa vytvárajú rôznymi spôsobmi.

Našou úlohou je naučiť sa cítiť stránku vytvorenú v PHP. Preto spravíme odkazy ako na bežnej statickej stránke Sekcia 1 atď.

Absolútne milujem tento proces vytvárania odkazov v Macromedia Dreamweaver. Mať čas žať OK a piť kávu.

2. Ako urobiť odkaz v menu neaktívnym, ak je návštevník na tejto stránke.

Pre návštevníka bude pohodlnejšie pohybovať sa po stránke s vedomím, na ktorej stránke sa nachádza.

Ak ste dodržali všetky kroky striktne bod po bode, uvidíte, že všetky odkazy v menu sú vždy aktívne. Ako to opraviť?

Najprv si pripomeňme definíciu toho, čo to je Podmienečné vyhlásenia

- je to vtedy, keď sa vykoná alebo nevykoná nejaká činnosť v závislosti od podmienok.

Urobme nasledovné:

  • Budeme potrebovať premenných a jeden podmienený operátor:

if ($master == "Hlavné")// táto podmienka. Ak sa vykoná, potom sa na toto miesto v ponuke pomocou príkazu echo vložia bežné značky HTML, ktoré zobrazujú nápis „Domov“.

ozvena"

Domov

";

inak// znamená „inak“ - čo sa stane, ak podmienka nebude splnená. V tomto prípade, ak podmienka nie je splnená, nápis „Domov“ bude odkazom vedúcim na hlavnú stránku.

ozvena"

Domov

";

  • Vymysleli sme si podmienku, ale tak skontrolovať premennútreba sa to opýtať.

Za týmto účelom umiestnime na všetky stránky nasledujúce bloky kódu:

$master = "Hlavný";

$master = "Sekcia 1";

$master = "Sekcia 2";

$master = "Sekcia 3";

Ako vidíte, každá stránka má svoj vlastný kód.

Takže naše praktické kroky na vytvorenie ponuky PHP budú nasledovné:

1) Otvorte súbor index.php

a vložte kód

$master = "Hlavný";

na miesto, kde vložíte kód, ktorý zobrazí samotné menu stránky zahrnúť "menu.html";
?>

2) Otvorte súbor menu.html a vložte kód s podmienkou namiesto jednoduchého html odkazu na hlavnú stránku.

Pozeráme sa do prehliadača a obdivujeme! Ak prejdeme na hlavnú stránku, odkaz už nie je aktívny!

3) Opakujte body 1 a 2 so stranami 1.php, 2.php, 3.php

Opakovanie 1:

1) Otvorte súbor 1.php a vložte pred kód, ktorý zobrazuje blok ponuky s danou premennou

$master = "Sekcia 1";

2) Otvorte súbor menu.html a namiesto jednoduchého odkazu vložte kód s podmienkou Sekcia 1 vykonaním nasledujúcich zmien:

if ($master == "Sekcia 1")// táto podmienka. Ak sa vykoná, potom sa na toto miesto v ponuke pomocou príkazu echo vložia bežné značky HTML, ktoré zobrazujú nápis „Sekcia 1“.

ozvena"

Sekcia 1

";

inak// znamená „inak“ - čo sa stane, ak podmienka nebude splnená. V tomto prípade, ak podmienka nie je splnená, nápis „Sekcia 1“ bude odkazom vedúcim na hlavnú stránku.

ozvena"

Sekcia 1

";

Zázrak sa stal znova! Teraz, ak sme na stránke Sekcia 1, odkaz v menu nie je aktívny.

Opakovanie je matkou učenia! Alebo pre tých v nádrži! Opäť

Opakovanie 2

1) Otvorte súbor 2.php a vložte kód.

$master = "Sekcia 2";

2) Znova otvorte súbor menu.html a prilepte kód s podmienkou

if ($master == "Sekcia 2")// táto podmienka. Ak sa vykoná, potom sa na toto miesto v ponuke pomocou príkazu echo vložia bežné značky HTML, ktoré zobrazujú nápis „Sekcia 2“.

ozvena"

Sekcia 2

";

inak// znamená „inak“ - čo sa stane, ak podmienka nebude splnená. V tomto prípade, ak podmienka nie je splnená, nápis „Sekcia 2“ bude odkazom vedúcim na hlavnú stránku.

ozvena"

Sekcia 2

";

Opakovanie 3

1) Otvorenie súbor 3.php a nastavte premennú.

$master = "Sekcia 3";

2) Do súboru menu.html vložíme namiesto odkazu kód s podmienkou Časť 3, zmeny sú:

if ($master == "Sekcia 3")// táto podmienka. Ak sa vykoná, potom sa na toto miesto v ponuke pomocou príkazu echo vložia bežné značky HTML, ktoré zobrazujú nápis „Sekcia 3“.

ozvena"

Časť 3

";

inak// znamená „inak“ - čo sa stane, ak podmienka nebude splnená. V tomto prípade, ak podmienka nie je splnená, nápis „Sekcia 3“ bude odkazom vedúcim na hlavnú stránku.

ozvena"

Časť 3

";

Spodná čiara: namiesto odkazov v tomto type menu

Domov


Sekcia 1

Sekcia 2


Časť 3

Táto lekcia o php bola napísaná ako odpoveď na početné požiadavky návštevníkov stránky a je praktickým sprievodcom, ako sa naučiť vytvoriť dynamické menu pre stránku v php.

Ďalší webmasterov cheat sheet vám povie, ako vytvoriť jedinečné názvy, popisy a kľúčové slová pre každú stránku v PHP.

Môžete si stiahnuť archív so všetkými súbormi šablón stránok a php menu. Odporúča sa pre začiatočníkov v programovaní.

Ak ste pripravení vážne študovať PHP, potom je ťažké nájsť lepší video kurz od Popova. Má veľa skúseností a dobrý štýl.

]]> ]]>

23. apríla 2017

V predchádzajúcich lekciách sme sa pozreli na príklady toho, čo sú polia. V tomto návode použijeme polia v praxi na vytvorenie menu na webovej stránke.

Prečo sú pohodlnejšie ako bežné HTML tagy?

Povedzme, že naša stránka má 100 stránok, z ktorých každá má rovnaké menu. A zrazu sme potrebovali zmeniť položky menu. Iba pomocou HTML budeme musieť urobiť úpravy na 100 stránkach webu, čo je veľa. Takže PHP nám v takýchto situáciách pomáha. Bude stačiť zmeniť položky ponuky iba raz v jednom súbore.

Teraz poďme.

Na lokálnom hostingu v priečinku “ domén vytvorte priečinok s názvom „ pole- Ponuka. miestne”.

V tomto priečinku vytvoríme štyri súbory: index. php, o. php, kontakt. php A Ponuka. php.

!!! Syntax súboru by mala byťPHP.

Do súboru index.php napíšeme jednoduchý HTML framework.




charset="utf-8" >



Domov


zahŕňajú("menu.php" );
?>

Skopírujte tento kód do súborov about.php a contact.php. Meníme len názvy stránok v tagu

.

Píšeme kód pre menu.

V súbore menu.php napíšte asociatívne pole.

$menu = pole (
"index "=> "index.php",
"o" => "about.php",
"kontakty" => "contact.php"
);
?>

Nižšie píšeme menu pomocou HTML tagov.

V prehliadači uvidíme bežné menu vo forme zoznamu.

Kliknutím na ľubovoľnú položku ponuky prejdeme na príslušnú stránku a ponuka bude na všetkých stránkach.

Teraz poďme skomplikovať úlohu. Vymažeme všetko zo súboru menu.php A...

Píšeme viacrozmerné pole.




charset="utf-8" >
<span>Použitie poľa na zobrazenie ponuky na webovej stránke.</span>


$menu = pole (
pole("odkaz" => "Domov", "href"=> "index.php"),
pole("odkaz" => "O nás", "href"=> "o.php"),
pole("odkaz" => "Kontakty", "href"=> "kontakt.php")
);
?>



A v poslednej fáze...

Kreslenie menu pomocou slučky pre každý.

Odstránenie zoznamu zo súboru menu.php

    a namiesto toho napíšte nasledujúci kód.

    ozvena"

      " ;
      pre každý($menu ako$item)(
      ozvena "
    • ($item)
    • " ;
      }

      V prehliadači uvidíme rovnaký výsledok.

      Ak chcete zmeniť položky ponuky, stačí ich zmeniť v súbore menu.php len raz.

      Presne na toto sa teraz pozrieme. A tak je úlohou urobiť vertikálne menu vo forme rozbaľovacieho zoznamu.

      Ako sa to dá implementovať v PHP? Veľmi jednoduché! Napríklad máme súbor index.php, ktorý by mal v závislosti od vybranej sekcie v rozbaľovacom zozname zobraziť príslušný obsah na stránke. Toto sa implementuje takto:

      1. Vytvárame súbory vo formáte .html, ktoré budú obsahovať obsah potrebný na výstup.

      2. Vytvoríme (zapíšeme) v skripte index.php potrebné podmienky na zobrazenie relevantných informácií.

      3. Vytvorený skript posudzujeme z hľadiska bezpečnosti vykonávaného skriptu.

      No, zdá sa, že sme skončili s teóriou, prejdime k praxi. Najprv vytvoríme statické stránky vo formáte .html, ktoré budú obsahovať potrebné informácie. Môžete si tam napísať, čo chcete :) Výsledkom by malo byť, že by sme mali mať aspoň dva súbory first.html a second.html , aby sme ich potom mohli vytvoriť koľko chceme, keď pochopíme základný algoritmus ako kód funguje.

      Zobrazenie rozbaľovacieho zoznamu v súbore index.php Vytvoríme html formulár a nižšie napíšeme PHP skript s nasledujúcim obsahom:



      Menu PHP


      Rozbaľovacia ponuka v PHP












      if (isset ($_GET ["kde" ]))
      {
      if ($_GET ["kde" ]==1 )
      $subor = "prvy.html" ;
      if ($_GET ["kde" ]==2 )
      $subor = "druhy.html" ;
      include($file);
      }
      ?>


      Teraz je kód pre rozbaľovaciu ponuku pripravený a najzaujímavejšie je, že bude fungovať normálne, ale z hľadiska bezpečnosti je zraniteľný.

      Zraniteľnosťou tohto skriptu je premenná $file zostane neinicializovaná a v tomto prípade hodnota automaticky vytvorenej premennej ide priamo do funkcie zahŕňajú a ona ju (premennú) úspešne pripojí a zobrazí na obrazovke. A nemusí to byť len konfiguračný súbor .htaccess. Na hacknutie tohto skriptu stačí zadať parametru where hodnotu, ktorú kód neposkytuje, napríklad 3. A keďže túto hodnotu skript neposkytuje, je to len premenná $file neprejde inicializáciou. Preto mu môže byť pridelená ľubovoľná hodnota prostredníctvom reťazca URL.

      http://localhost/index.php?where=3&file=.htaccess

      Ale je to tak, mierna odbočka od témy. 😀

      Riešenie tohto problému je celkom jednoduché, variabilné $file len ho treba pred použitím inicializovať, t.j. priradiť predvolenú hodnotu.

      Tu, ak je parameter where odovzdaný skriptu, premenná bude inicializovaná správne, inak bude jednoducho prázdna. Takto dopadlo rozbaľovacie menu [bezpečné] v PHP.

      P.S. Pri tvorbe scenárov je potrebné brať do úvahy a podľa toho vylúčiť všetky možné vektory útoku. Len tak vznikne projekt, ktorý bude spĺňať bezpečnostné pravidlá a bude zo strany zákazníka žiadaný. Uvídime sa znovu!

      Pretože odhaľuje obsah modulu menu.php. Nižšie predstavíme náš vlastný vývoj menu v PHP, ktorý bol napísaný od začiatku v poznámkovom bloku.

      Tento kód bude užitočný najmä pre dynamické stránky, ktoré majú vlastné nástroje. Ponúknem dve možnosti kódu, ktoré majú menšie rozdiely (rozdiely budú vysvetlené neskôr).

      Na začiatok uvediem približnú štruktúru stránky, pre ktorú je toto menu vhodné. Štruktúra stránky by mala vyzerať takto (klasické zobrazenie):

      /index.html /razdel_1/ /razdel_1/articles_1.html /razdel_1/articles_2.html ... /razdel_2/ /razdel_2/articles_1.html /razdel_2/articles_2.html ... ... ... /razdel_N/articles_2 .html

      Stránka môže obsahovať aj podsekcie pre sekcie:

      /razdel_1/podzaderl_1/ /razdel_1/podzaderl_1/articles_1.html /razdel_1/podzaderl_1/articles_2.html ... /razdel_1/podzaderl_2/articles_1.html /razdel_1/podzaderl_2/articles_2.html

      Táto štruktúra bude fungovať aj pre naše menu len s malými rozdielmi.

      Navrhujem vytvoriť samostatný súbor pre menu v php. Napríklad menu.php by bol skvelý názov pre takýto súbor. Na implementáciu ponuky je k dispozícii aj štýl ponuky v CSS, aby bola okamžite viac alebo menej krásna. Prirodzene, tento štýl je uvedený len ako referencia, pretože dizajn stránok je veľmi odlišný.

      Kód pre štýl ponuky v CSS:

      .menu ( height:42px; padding:0 0 0 16px; background:url(images/spacer.png) repeat; ) .menu li ( display:block; float:left; ) .menu li.active ( background: #000011 ; ) .menu a ( color:#FFF; display:block; line-height:42px; text-decoration:none; padding:0 14px; ) .menu a:hover ( background:url(images/spacer.png) repeat ;

      Teraz sa pozrime na prvú možnosť implementácie menu v PHP, ktorá je trochu zjednodušená.

      Prvá verzia kódu menu v PHP

      \n"; pre ($i=0;$i ": "
    • "; echo" ".$array_menu[$i]["name"]."
    • \n"; ) echo "
    "; ?>

    Menu je možné rozdeliť na dve časti. Prvý obsahuje informačné pole $array_menu, ktoré obsahuje názvy našich sekcií s odkazmi na sekcie. Existuje možnosť zadať tieto údaje do databázy mySQL, ale v tom nie je žiadny konkrétny bod, pretože vzorka je veľmi malá, takže to neovplyvní rýchlosť práce.

    Druhá časť obsahuje výstup menu cez cyklus for. Cyklus porovnáva adresu lokality s adresou z poľa $array_menu. Ak existuje zhoda, zobrazíme ďalšiu časť ponuky so špeciálnou aktívnou triedou:

  • , inak len
  • . To nám umožňuje zvýrazniť nejakou farbou časť menu, v ktorej sa používateľ nachádza. Podľa môjho názoru je to nevyhnutná vec pre každú stránku, aby používateľ pochopil, v ktorej sekcii sa nachádza.

    Poradie v poli sa zachová, keď sa ponuka zobrazí na stránke. To znamená, že pole musí byť vyplnené v poradí, v akom sa má ponuka zobraziť.

    Poznámka:
    Ak adresy URL (adresy) nadpisov sekcií vyzerajú takto:
    /sekcia 1
    alebo takto
    /razdel_1/nazvanie_razdela.html
    potom musíte napísať presnú zhodu do poľa_menu:
    $array_menu[$i]["url"]="/razdel_1"
    alebo v druhom prípade:
    $array_menu[$i]["url"]="/razdel_1/nazvanie_razdela.html";

    Ako funguje prvá možnosť ponuky?
    Zvýrazňuje menu iba vtedy, ak ste na adrese hlavičky sekcie. Napríklad, ak je adresa stránky /razdel_1/articles_1.html, potom ponuka nebude nijako zvýraznená.

    Druhá verzia kódu je upravenou verziou prvej a poskytuje možnosť zvýrazniť menu aj v článkoch, ktoré sa nachádzajú v sekciách.

    Druhá verzia kódu menu v PHP

    "; pre ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["title"]."
  • ";)) echo"
"; ?>

Žiadna webová stránka nie je úplná bez navigácie alebo, ako to tiež nazývajú, „ponuky stránok“. Takže ponuka lokality môže byť jednoúrovňová alebo viacúrovňová vo forme stromu. Ak pri implementácii jednoúrovňového menu neexistujú žiadne zvláštne ťažkosti, potom pri vytváraní viacúrovňového menu musíte starostlivo premyslieť.

Najdôležitejšou vecou v tejto úlohe je navrhnúť databázu pre naše viacúrovňové menu. Vytvorme si tabuľku Kategórie s tromi poliami id, titul, rodič Kde:

  • ID- identifikátor
  • Názov- Názov menu
  • Rodič- Predvolená nadradená kategória 0

Pole je zodpovedné za vetvenie menu Rodič Ak Rodič = 0, potom je táto kategória nadradenou kategóriou. Ak chcete pridať potomkov do nadradenej kategórie, musíte zadať v nadradenom poli ID správny rodič. Napríklad:

Tabuľky s kategóriami

Ako je zrejmé z tabuľky, nadradená kategória Autá sú dvaja potomkovia - toto je Mazda A Honda súvisiace podľa odboru Rodič. A kategória Motocykle sú dvaja potomkovia Kawasaki A Harley. Zároveň kategória Lode nemá žiadnych potomkov. Dúfam, že ste pochopili, ako prepojiť kategórie.

Ďalej prejdeme od slov k precvičovaniu. Vytvorme si tabuľku kategórií.

VYTVORIŤ TABUĽKU, AK NEEXISTUJE `categories` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `parent` int(10) unsigned NOT NULL, PRIMAR KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ; -- -- Výpis údajov z tabuľky `categories` -- INSERT INTO `categories` (`id`, `title`, `parent`) VALUES (1, "Autá", 0), (2, "Motocykle", 0 ), (3, "Mazda", 1), (4, "Honda", 1), (5, "Kawasaki", 2), (6, "Harley", 2), (7, "Mazda 3", 3), (8, "Mazda 6", 3), (9, "Sedan", 7), (10, "Hatchback", 7), (11, "Lode", 0), (12, "Liftback" , 8), (13, "Crossover", 8), (14, "Biela", 13), (15, "Červená", 13), (16, "Čierna", 13), (17, "Zelená" , 13), (18, "Mazda CX", 3), (19, "Mazda MX", 3);

Pracovný algoritmus pozostáva z:

Vytvorte pripojenie k databáze

dotaz("SET NAMES "utf8""); /* * Toto je "oficiálny" objektovo orientovaný spôsob, ako to urobiť * avšak $connect_error nefungovalo až do verzií PHP 5.2.9 a 5.3.0. */ if ($mysqli->connect_error) ( die("Chyba pripojenia (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Ak si potrebujete byť istí kompatibilitou s verziami pred 5.2 .9, * je lepšie použiť tento kód */ if (mysqli_connect_error()) ( die("Chyba pripojenia (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

Zápis funkcie na získanie údajov z tabuľky Kategórie

//Získajte pole našej ponuky z databázy ako funkciu poľa getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Vytvoriť pole, kde kľúčom poľa je ID ponuky $cat = array($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $); mačka)

Dostaneme pole, ako je toto, kde kľúč poľa je ID kategórie.

Funkcia konštrukcie stromu z masívneho dreva od Tommy Lacroix

//Funkcia na zostavenie stromu z poľa od Tommyho Lacroixa funkcia getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //Ak neexistujú žiadne prílohy if ( !$node[" parent"])( $strom[$id] = &$node; )else( //Ak existujú deti, potom iterujte cez pole $dataset[$node["parent"]]["childs "][$id] = &$ uzol; ) return $strom;

Dostaneme pole vo forme stromu

Celý scenár

dotaz("SET NAMES "utf8""); /* * Toto je "oficiálny" objektovo orientovaný spôsob, ako to urobiť * avšak $connect_error nefungovalo až do verzií PHP 5.2.9 a 5.3.0. */ if ($mysqli->connect_error) ( die("Chyba pripojenia (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Ak potrebujete mať istotu kompatibility s verziami pred 5.2 .9, * je lepšie použiť tento kód */ if (mysqli_connect_error()) ( die("Chyba pripojenia (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Získať pole našej ponuky z databázy ako funkcia poľa getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Vytvorenie poľa, kde je kľúč poľa je ID ponuky $cat = array($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat ) //Funkcia pre vytvorenie stromu z poľa z funkcie Tommyho Lacroixa getTree($dataset) ( $tree = array(); foreach ($dataset ako $id => &$node) ( //Ak neexistujú žiadne prílohy if (!$node[ "rodič"])( $strom[$id] = &$uzol; )else( //Ak existujú potomkovia, prejdeme cez pole $dataset[$node["parent"]]["childs"][ $id] = &$node ) ) return $tree ) //Získajte pripravené pole s údajmi $cat = getCat($mysqli); //Vytvorenie stromovej ponuky $strom = getTree($cat); //Šablóna na zobrazenie menu vo forme stromovej funkcie tplMenu($category)( $menu = "
  • ". $category["title"].""; if(isset($category["childs"]))( $menu .= "
      ". showCat($category["deti"]) ."
    ";) $menu .="
  • "; return $menu; ) /** * Prečítajte si našu šablónu rekurzívne **/ funkcia showCat($data)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $string ) //Získanie HTML značky $cat_menu = showCat($tree);
      ".$cat_menu."
    "; ?>

    Výsledok práce

    Viacúrovňové menu v PHP + MySQL pre admin panel

    Ak chcete použiť túto ponuku na paneli správcu vašej stránky, musíte prepísať niekoľko funkcií tplMenu(), showCat().

    ".$category["title"].""; )else( $menu = " "; ) if(isset($kategória["deti"]))( $i = 1; for($j = 0; $j< $i; $j++){ $str .= "→"; } $i++; $menu .= showCat($category["childs"], $str); } return $menu; } /** * Рекурсивно считываем наш шаблон **/ function showCat($data, $str){ $string = ""; $str = $str; foreach($data as $item){ $string .= tplMenu($item, $str); } return $string; } //Получаем HTML разметку $cat_menu = showCat($tree, ""); //Выводим на экран echo ""; ?>

    Výsledok práce

    Vyberte Autá → Mazda →→ Mazda 3 →→→ Sedan →→→ Hatchback →→ Mazda 6 →→→ Liftback →→→ Crossover →→→→ Biela →→→→ Červená → →→→ Čierna →→→→ Zelená →→ Mazda CX →→ Mazda MX → Motocykle Honda → Kawasaki → Harley Boats