Meniul Analelor php. Meniu cu mai multe niveluri în PHP și MySQL. Scrierea codului pentru meniu

În acest articol vă voi arăta cum puteți crea meniu pe mai multe niveluri în PHP și MySQL. Desigur, puteți veni cu multe opțiuni pentru a-l crea, dar judecând după numărul de întrebări pe această temă, aveți nevoie de un exemplu. Și o voi da în acest articol. Permiteți-mi să notez imediat că acest articol are sens doar pentru cei care știu PHPși știe să lucreze cu MySQL. Toți ceilalți trebuie să treacă prin asta mai întâi sau să citească câteva cărți PHP și MySQL.

Mai întâi, să creăm un tabel în baza de date cu următoarele câmpuri:

  • id- identificator unic.
  • titlu- ancorați linkuri în meniu.
  • legătură- adresa la care va duce articolul de meniu.
  • parent_id- ID de părinte. Dacă nu există niciun element părinte, atunci va fi NULL aici (sau puteți pune și 0).

Am aranjat masa, acum este timpul Cod PHP. Deplin Cod PHP este dat mai jos:

$mysqli = mysqli nou ("localhost", "root", "", "db"); // Conectați-vă la baza de date
$result_set = $mysqli->query("SELECT * FROM `menu`"); // Selectați toate înregistrările din tabelul cu meniul
$items = array(); // Matrice pentru elementele de meniu
while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // Umpleți matricea cu un eșantion din baza de date
$copii = array(); // Matrice pentru potrivirea elementelor copil cu părinții lor
foreach ($articole ca $item) (
if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // Umpleți matricea
}
funcția printItem($item, $items, $childrens) (
/* Afișează elementul de meniu */
ecou"

  • ";
    echo "".$item["titlu"]."";
    $ul = fals; // Au fost randați copii?
    în timp ce (adevărat) (
    /* O buclă infinită în care căutăm toți copiii */
    $key = array_search($item["id"], $copii); // Căutăm un element copil
    dacă (!$key) (
    /* Nu s-au găsit copii */
    dacă ($ul) ecou ""; // Dacă au fost afișate elemente copil, atunci închideți lista
    pauză; // Ieși din buclă
    }
    unset($copii[$cheie]); // Eliminați elementul găsit (pentru ca acesta să nu fie afișat din nou)
    dacă (!$ul) (
    ecou"
      "; // Porniți lista internă dacă nu există încă elemente copil
      $ul = adevărat; // Setați steagul
      }
      echo printItem($articole[$cheie], $articole, $copii); // Afișează recursiv toate elementele copil
      }
      ecou"";
      }
      ?>

      Acest cod funcționează complet, cu toate acestea, trebuie să înțelegeți că nimeni nu scrie în acest fel (în special, ieșire prin ecou Etichete HTML). Și sarcina ta este să iei algoritmul din acest cod, dar nu și codul în sine. Și apoi conectați acest algoritm la motorul dvs. Am încercat să comentez cu atenție codul de ieșire meniu cu mai multe niveluriîn PHP și MySQL, dar, desigur, nu este cel mai transparent și necesită cunoștințe inițiale destul de bune. Dacă încă nu știi bine PHP și MySQL, atunci vă recomand cu tărie să treceți mai întâi prin asta

      Exact la asta ne vom uita acum. Și astfel, sarcina este de a crea un meniu vertical sub forma unei liste derulante.

      Cum poate fi implementat acest lucru în PHP? Foarte simplu! De exemplu, avem un fișier index.php, care, în funcție de secțiunea selectată din lista derulantă, ar trebui să afișeze conținutul corespunzător pe pagină. Aceasta este implementată după cum urmează:

      1. Creăm fișiere în format .html, care vor conține conținutul necesar pentru ieșire.

      2. Creăm (scriem) în scriptul index.php condițiile necesare pentru afișarea informațiilor relevante.

      3. Considerăm scriptul creat din punctul de vedere al securității scriptului care se execută.

      Ei bine, se pare că am terminat cu teoria, să trecem la practică. Mai întâi, creăm pagini statice în format .html, care vor conține informațiile necesare. Puteți scrie orice doriți acolo :) Ca urmare, ar trebui să ajungem cu cel puțin două fișiere first.html și second.html , ca apoi să putem face câte dintre ele vrem, odată ce înțelegem algoritmul de bază al cum functioneaza codul.

      Pentru a afișa o listă derulantă într-un fișier index.php creați un formular html și scrieți mai jos Script PHP cu urmatorul continut:



      Meniu PHP


      Meniu derulant în PHP












      if (isset ($_GET ["unde" ]))
      {
      dacă ($_GET [„unde” ]==1 )
      $fișier = "first.html" ;
      dacă ($_GET [„unde” ]==2 )
      $fișier = "second.html" ;
      include($fișier);
      }
      ?>


      Acum codul pentru meniul drop-down este gata, iar cel mai interesant lucru este că va funcționa normal, dar din punct de vedere al securității este vulnerabil.

      Vulnerabilitatea acestui script este că variabila $file rămâne neinițializată, iar în acest caz valoarea variabilei create automat intră direct în funcție include, iar ea, la rândul său, o conectează cu succes (variabila) și o afișează pe ecran. Și nu poate fi doar fișierul de configurare .htaccess. Pentru a pirata acest script, este suficient să treci parametrului where o valoare neprevăzută de cod, de exemplu 3. Și deoarece această valoare nu este prevăzută de script, este doar o variabilă $file nu va suferi initializare. Prin urmare, i se poate da o valoare arbitrară prin șirul URL.

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

      Dar așa este, o ușoară digresiune de la subiect. 😀

      Soluția la această problemă este destul de simplă, variabilă $file trebuie doar să fie inițializat înainte de utilizare, adică să i se atribuie o valoare implicită.

      Aici, dacă parametrul unde este transmis scriptului, atunci variabila va fi inițializată corect, altfel va fi pur și simplu goală. Așa a rezultat meniul drop-down [sigur] în PHP.

      P.S. Atunci când creați scenarii, este necesar să luați în considerare și să excludeți, în consecință, toți vectorii de atac posibili. Acesta este singurul mod de a crea un proiect care va respecta regulile de siguranță și va fi solicitat de client. Ne vedem din nou!

      Dacă sunteți interesat de răspunsul la întrebarea cum să creați un meniu pentru site-ul web, atunci ați ajuns la adresa potrivită.

      Ne vom uita la crearea unui meniu dinamic în PHP, scris special pentru manechine de programare, precum și pentru cei care sunt încă în rezervor.

      Lecția 3. Realizarea unui meniu în php pentru un site dinamic - pentru manechini

      Să creăm viitorul aspect al site-ului nostru. Pentru a face acest lucru, vom desena un site web super frumos în Photoshop și îl vom tăia în bucăți. Să ne imaginăm că antetul, logo-ul, meniul și subsolul nu sunt scrise în cuvinte, ca în acest exemplu, ci acestea sunt elemente ale site-ului proiectate elegant și colorat.

      Să creăm trei pagini, de exemplu, și să le numim Secțiunea 1, Secțiunea 2, Secțiunea 3

      Acest text va fi diferit pentru diferite pagini, dar nu ne vom deranja cu el și îl vom lăsa așa cum este pe toate paginile.

      Să începem să creăm un site web în PHP.

      1. Selectați antetul, logo-ul, meniul, blocurile de subsol în fișiere separate cu extensia php sau html

      header.html

      logo.html

      meniu.html

      footer.html

      Să adăugăm un fișier cu acest text, astfel încât să-l putem vedea pe toate paginile. Să-l sunăm text.html

      Nota. De acum înainte voi păstra înregistrări suplimentare direct în dosar. text.html

      2. Să creăm un șablon pentru site-ul nostru în PHP.

      Pentru a face acest lucru, vom face un lucru simplu - salvați fișierul real, dar cu extensia php și ștergeți tot conținutul textului. Poate că nu este profesional, dar este de înțeles, dar vom complica totul mai târziu. Acum, principalul lucru este să înțelegeți principiul aspectului.

      3. Acum nu avem nevoie de fișierul template.html.

      Datorită lui, avem o idee despre cum va arăta site-ul nostru.

      4. Șablonul nostru este fișierul template.php

      Acum vom insera toate elementele site-ului în el folosind comanda include.

      5. Să creăm trei pagini, așa cum urma să facem inițial.

      Secțiunea 1, hai să sunăm 1.php

      Secțiunea 2, hai să sunăm 2.php

      Secțiunea 3, hai să sunăm 3.php

      Pentru aceasta puteți folosi cu cea mai simplă comandă salvează ca...

      Să le explic pentru cei mici: deschideți fișierul template.php, apoi apăsați salvează ca...și salvați-l sub numele 1.php, repetați procedura și salvați secvențial paginile site-ului 2.php, 3.php

      Am ajuns să avem 3 pagini cu același design. Doar lipiți-l în loc de fișier text.html altul, complement imagini diferite sau oricare coduri html, scripturile și conținutul fiecărei pagini vor fi unice.

      Atenţie!

      Dacă fișierul nu este creat index.php pentru pagina principală, apoi în browser, tastând adresa site-ului, nu vom vedea site-ul în sine, ci doar structura directoarelor (lista de foldere).

      Poți să te uiți în Denver și să vezi singur. Să remediam situația - creați un fișier index.phpși haideți să sunăm fără alte prelungiri Acasă. În același timp, să creăm un fișier text-home.htmlși folosind comanda include lipiți-l pe cel pe care tocmai l-am creat pagina de start site-ul.

      6. Cum să vizualizați un site web în php?

      Pur și simplu nu vom vedea ce s-a întâmplat. Acesta nu mai este un șablon cu extensie html.

      Dar nici o problemă. Avem nevoie de al nostru, adică. server local pe calculator. Pentru a face acest lucru, vom instala Denver și vom privi rezultatul muncii noastre într-un browser fără a intra online.

      Acum asta e ordinea. Am introdus adresa site-ului și am văzut tot ce tocmai fusese creat în forma normala cu design.

      Acum să luăm în considerare meniul PHP al site-ului.

      1. Deschideți fișierul menu.html și transformați secțiunile 1, 2 și 3 în link-uri de pe site. Link-urile în PHP sunt create în moduri diferite.

      Sarcina noastră este să învățăm cum să simți un site creat în PHP. Prin urmare, vom face linkuri ca pe un site static obișnuit Secțiunea 1 etc.

      Îmi place absolut acest proces de creare a linkurilor în Macromedia Dreamweaver. Aveți timp să culegeți Bineși bea cafea.

      2. Cum să faci un link în meniu inactiv dacă vizitatorul se află pe această pagină.

      Va fi mai convenabil pentru vizitator să navigheze pe site știind pe ce pagină se află.

      Dacă ai urmat cu strictețe toți pașii punct cu punct, vei vedea că toate linkurile din meniu sunt mereu active. Cum să remediez asta?

      În primul rând, să ne amintim definiția a ceea ce este Declarații condiționale

      – acesta este atunci când o acțiune este efectuată sau nu, în funcție de condiții.

      Hai să o facem pașii următori:

      if ($master == "Principal")// aceasta este o condiție. Dacă este executat, atunci în acest loc al meniului, folosind comanda echo, sunt inserate etichete HTML obișnuite care afișează inscripția „Acasă”.

      ecou"

      Acasă

      ";

      altfel// înseamnă „altfel” - ce se va întâmpla dacă condiția nu este îndeplinită. În acest caz, dacă condiția nu este îndeplinită, inscripția „Acasă” va fi un link care duce la pagina principală.

      ecou"

      Acasă

      ";

      • Am venit cu condiția, dar așa verifica variabilatrebuie să-l întrebi.

      Pentru a face acest lucru, vom plasa următoarele blocuri de cod pe toate paginile:

      $master = "Principal";

      $master = „Secțiunea 1”;

      $master = „Secțiunea 2”;

      $master = „Secțiunea 3”;

      După cum puteți vedea, fiecare pagină are propriul cod.

      Deci, pașii noștri practici pentru crearea unui meniu PHP vor fi următorii:

      1) Deschiderea fișierului index.php

      și lipiți codul

      $master = "Principal";

      la locul în care introduceți codul care afișează meniul site-ului propriu-zis includeți „menu.html”;
      ?>

      2) Deschiderea fișierului meniu.htmlși introduceți codul cu condiția în loc de un simplu link html către pagina principală.

      Ne uităm în browser și admirăm! Dacă mergem la pagina principală, linkul nu mai este activ!

      3) Repetați punctele 1 și 2 cu paginile 1.php, 2.php, 3.php

      Repetiția 1:

      1) Deschideți fișierul 1.php și introduceți înainte codul care afișează un bloc de meniu cu o variabilă dată

      $master = „Secțiunea 1”;

      2) Deschideți fișierul menu.html și introduceți codul cu condiția în loc de un simplu link Secțiunea 1, făcând următoarele modificări:

      dacă ($master == „Secțiunea 1”)// aceasta este o condiție. Dacă este executat, atunci în acest loc al meniului, folosind comanda echo, sunt inserate etichete HTML obișnuite care afișează inscripția „Secțiunea 1”.

      ecou"

      Secțiunea 1

      ";

      altfel// înseamnă „altfel” - ce se va întâmpla dacă condiția nu este îndeplinită. În acest caz, dacă condiția nu este îndeplinită, inscripția „Secțiunea 1” va fi un link care duce la pagina principală.

      ecou"

      Secțiunea 1

      ";

      Minunea s-a întâmplat din nou! Acum dacă suntem pe pagină Secțiunea 1, linkul din meniu nu este activ.

      Repetiția este mama învățării! Sau pentru cei din rezervor! Din nou

      Repetiția 2

      1) Deschide fișierul 2.phpși lipiți codul.

      $master = „Secțiunea 2”;

      2) Deschideți din nou fișierul menu.html și inserați codul cu condiția

      dacă ($master == „Secțiunea 2”)// aceasta este o condiție. Dacă este executat, atunci în acest loc al meniului, folosind comanda echo, sunt inserate etichete HTML obișnuite care afișează inscripția „Secțiunea 2”.

      ecou"

      Secțiunea 2

      ";

      altfel// înseamnă „altfel” - ce se va întâmpla dacă condiția nu este îndeplinită. În acest caz, dacă condiția nu este îndeplinită, inscripția „Secțiunea 2” va fi un link care duce la pagina principală.

      ecou"

      Secțiunea 2

      ";

      Repetiția 3

      1) Deschidere fișierul 3.phpși setați variabila.

      $master = „Secțiunea 3”;

      2) În fișierul menu.html introducem codul cu o condiție în loc de un link Secțiunea 3, modificările sunt:

      dacă ($master == „Secțiunea 3”)// aceasta este o condiție. Dacă este executat, atunci în acest loc al meniului, folosind comanda echo, sunt inserate etichete HTML obișnuite care afișează inscripția „Secțiunea 3”.

      ecou"

      Secțiunea 3

      ";

      altfel// înseamnă „altfel” - ce se va întâmpla dacă condiția nu este îndeplinită. În acest caz, dacă condiția nu este îndeplinită, inscripția „Secțiunea 3” va fi un link care duce la pagina principală.

      ecou"

      Secțiunea 3

      ";

      Concluzie: în loc de link-uri în acest tip de meniu

      Acasă


      Secțiunea 1

      Secțiunea 2


      Secțiunea 3

      Această lecție despre php a fost scrisă ca răspuns la numeroase solicitări din partea vizitatorilor site-ului și este un ghid practic pentru a învăța cum să creați un meniu dinamic pentru un site în php.

      Următoarea fișă de cheat a webmasterului vă va spune cum să creați titluri, descrieri și cuvinte cheie unice pentru fiecare pagină în PHP.

      Puteți descărca arhiva cu toate șablonul site-ului și fișierele de meniu php. Recomandat celor care sunt începători în programare.

      Dacă ești gata să studiezi PHP serios, atunci este dificil să găsești un curs video mai bun de la Popov. Are multă experiență și un stil bun.

      ]]> ]]>

      Meniul unui site în PHP, care este controlat de scripturi PHP, are propriile sale caracteristici. Acestea nu sunt doar link-uri absolute sau relative, deși acesta poate fi cazul, ci, de regulă, blocuri de link-uri generate dinamic în panourile laterale cu secțiuni și subsecțiuni și blocuri de link-uri din paginile interne ale site-ului în sine. Un meniu generat dinamic este foarte convenabil deoarece poate fi introdus oriunde pe site și, cel mai important, la momentul potrivit. Adică, atunci când treceți la diferite secțiuni și subsecțiuni, puteți extinde dinamic diferite blocuri de meniu. Mai mult, ele pot fi diferite nu numai prin conținut, ci și ca formă și design. Într-un site static, este, de asemenea, destul de posibil să faci astfel de trucuri, dar va costa fișiere șablon suplimentare și o mulțime de alte trucuri. În timp ce un site scris în PHP nu necesită nimic din toate acestea. Șablonul va rămâne așa cum a fost. Totul va fi controlat de unul sau mai multe scripturi PHP simple.

      Pentru a verifica acest lucru, este suficient să scrieți un script PHP pentru a genera dinamic un meniu, de exemplu, prima categorie și a-l forța să extindă meniul acestei categorii printr-un script scris anterior. Titlurile rămase pot fi formate într-un mod similar. Mai mult, codul scriptului în sine va rămâne practic neschimbat. Doar fișierul text se va schimba, ceea ce va determina numele legăturilor și legăturile în sine. Codul pentru un astfel de script este dat mai jos.

      // Creator de meniu
      $meniu = @fisier($rubric1_meniu);
      $linii = count($meniu);
      pentru ($i = 0; $i< $lines; $i++)
      {
      list($menu_link,$menu_name,$menu_title)=explode("::", $meniu[$i]);
      if($page == rub1_part1 și $i == 0) ($refcolor = "style="color:#cc0000"";)
      elseif($page == rub1_part2 și $i == 1) ($refcolor = "style="color:#cc0000"";)
      elseif($page == rub1_part3 și $i == 2) ($refcolor = "style="color:#cc0000"";)
      else ($refcolor = "";)
      $rubric1.="

    • ".$nume_meniu."
    • ";
      }
      ?>

      Pentru ca un astfel de script să funcționeze, aveți nevoie de un fișier text în care vor fi stocate numele linkurilor de meniu, linkurile în sine și titlul acestora. Crearea unui astfel de fișier nu este dificilă, doar executați comanda Fișier -> Nou din meniul principal al programului Dreamweaver, creați un nou document html, așa cum este descris mai devreme, verificați și, dacă este necesar, modificați codificarea noului fișier în UTF -8, apoi salvați-l sub numele rubric1.dat în folderul de date creat anterior pentru acesta. Calea completă către acest fișier va fi D:/Mysitephp/data/rubric1.dat. Conținutul fișierului de mai jos este linkurile în sine, numele și titlul lor (sfaturi). În plus, pentru a pune în funcțiune acest script, acesta trebuie conectat folosind funcția include()în motorul de șablon main.php.

      Rub1_part1::Secțiunea 1::Secțiunea 1 Rubrica 1::
      rub1_part2::Secțiunea 2::Secțiunea 2 rubrica 1::
      rub1_part3::Secțiunea 3::Secțiunea 3 rubrica 1::

      În plus, trebuie să creați și un mic script cu setări care vor stoca adresa completă a site-ului, căile către folderele de pagini și meta descrierile site-ului, căile către fișierele meniului site-ului și conectați-l folosind funcția include()în motorul de șablon main.php. Pentru a face acest lucru, trebuie să creați un nou fișier php și să-l salvați sub un nume precum settings.php în folderul php. Calea completă către fișier va fi D:/Mysitephp/php/settings.php și conținutul acestuia este prezentat mai jos.

      # folder cu documente html
      $doctemplates = "șabloane";
      # cale completă către directorul de scripturi
      $turl="http://mysitephp.ru";
      # bază de date cu date
      $rubric1_menu = "date/rubric1.dat";
      ?>

      Cum funcționează scriptul PHP pentru crearea unui meniu? Mai întâi în variabila $menu folosind funcția fişier() Conținutul fișierului text rubric1.dat este plasat. Apoi funcția conta() numără numărul de linii dintr-un fișier text și funcții listă()Şi exploda() meniul în sine este extins într-o buclă, unde metoda de lipire a liniilor împreună (operația punct . ) se formează rânduri de legături cu numele și titlurile acestora, care sunt apoi plasate în variabila $rubric1. Urmează scriptul motorului de șablon, unde scriptul de meniu este conectat de funcție include(), mută conținutul variabilei $rubric1 în locația dorită de pe site folosind funcția descrisă anterior repl().

      Un astfel de meniu nu va funcționa încă, deoarece conține doar link-urile în sine cu toate atributele necesare, dar nu există un script care să asigure trecerea la aceste link-uri și deschiderea paginilor site-ului care vor corespunde acestor link-uri. Ne vom ocupa în continuare de acest script PHP.

      Apoi, puteți actualiza proiectul cu scriptul de generare a meniului. De asemenea, puteți descărca proiectul actualizat de pe pagina care se va deschide după înregistrarea și activarea unui abonament gratuit în panoul din dreapta. Adresa paginii trebuie salvată. Pe această pagină vor apărea în viitor link-uri pentru descărcarea actualizărilor de proiecte, diverse scripturi utile, programe, lecții și tutoriale video despre proiectarea circuitelor, programare și construirea site-ului web. pentru incepatori.

      Proiectul site-ului php descărcat și actualizat cu noi scripturi poate fi acum comparat cu ceea ce s-a întâmplat ca urmare a pașilor descriși mai sus. În continuare, pentru a elimina discrepanțe, ar fi util să înlocuiți complet proiectul cu cel descărcat, să efectuați operația, să porniți serverul Denwer, să tastați mysitephp.ru în fereastra browserului și să vedeți ce a ieșit din el. Meniul primei secțiuni ar trebui să se extindă în partea din stânga sus a șablonului, așa cum se arată în imaginea de mai jos.

      Du-te și topește-te în rețeaua ta de socializare preferată

      Niciun site web nu este complet fără navigare sau, așa cum îl numesc și ei, un „meniu site”. Deci, meniul site-ului poate fi cu un singur nivel sau cu mai multe niveluri sub forma unui arbore. Dacă nu există dificultăți deosebite în ceea ce privește implementarea cu un meniu cu un singur nivel, atunci când creați un meniu cu mai multe niveluri, trebuie să vă gândiți cu atenție.

      Cel mai important lucru în această sarcină este să proiectăm baza de date pentru meniul nostru cu mai multe niveluri. Să creăm un tabel Categorii cu trei câmpuri id, titlu, mamă Unde:

      • ID- identificator
      • Titlu- Numele meniului
      • Mamă- Categoria implicită părinte 0

      Câmpul este responsabil pentru ramificarea meniului Mamă Dacă Părinte = 0, atunci această categorie este categoria părinte. Pentru a adăuga descendenți în categoria părinte, trebuie să specificați în câmpul părinte ID părintele potrivit. De exemplu:

      Tabele cu categorii

      După cum se vede din tabel, categoria părinte Mașini sunt doi descendenți – aceasta este MazdaŞi Hondaînrudite pe domenii Mamă. Și categoria Motociclete doi descendenţi sunt KawasakiŞi Harley. Totodată, categoria Bărci nu are descendenți. Sper că înțelegeți cum să legați categoriile.

      Apoi trecem de la cuvinte la practică. Să creăm un tabel Categorii.

      CREATE TABLE IF NU EXIST `categories` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `parent` int(10) unsigned NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ; -- -- Dump de date din tabelul `categories` -- INSERT INTO `categories` (`id`, `title`, `parent`) VALORI (1, "Mașini", 0), (2, "Motociclete", 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, „Barci”, 0), (12, „Liftback” , 8), (13, „Crossover”, 8), (14, „Alb”, 13), (15, „Roșu”, 13), (16, „Negru”, 13), (17, „Verde” , 13), (18, „Mazda CX”, 3), (19, „Mazda MX”, 3);

      Algoritmul de lucru constă din următoarele:

      Creați o conexiune la baza de date

      query("SET NUMELE "utf8""); /* * Acesta este modul „oficial” orientat pe obiect de a face acest lucru * cu toate acestea $connect_error nu a funcționat până la versiunile PHP 5.2.9 și 5.3.0.

      */ if ($mysqli->connect_error) ( die("Eroare de conectare (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Dacă trebuie să fii sigur de compatibilitatea cu versiunile înainte de 5.2 .9, * este mai bine să utilizați acest cod */ if (mysqli_connect_error()) ( die("Eroare de conectare (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

      Scrierea unei funcții pentru a obține date din tabelul Categorii

      //Obțineți matricea meniului nostru din baza de date ca funcție de matrice getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Creați o matrice unde cheia matricei este ID-ul meniului $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $ pisica)

      Obținem o matrice ca aceasta, unde cheia matricei este ID-ul categoriei.

      Funcție de construcție din lemn masiv de la Tommy Lacroix

      //Funcție pentru construirea unui arbore dintr-un tablou din funcția Tommy Lacroix getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //Dacă nu există atașamente dacă ( !$node[" părinte"])( $tree[$id] = &$nod; )else( //Dacă există copii, atunci iterați prin matricea $dataset[$node["părinte"]]["copii „][$id] = &$ nod; ) returnează $tree;

      Obținem o matrice sub forma unui arbore

      query("SET NUMELE "utf8""); /* * Acesta este modul „oficial” orientat pe obiect de a face acest lucru * cu toate acestea $connect_error nu a funcționat până la versiunile PHP 5.2.9 și 5.3.0.
    • */ if ($mysqli->connect_error) ( die("Eroare de conectare (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Dacă trebuie să fii sigur de compatibilitatea cu versiunile înainte de 5.2 .9, * este mai bine să utilizați acest cod */ if (mysqli_connect_error()) ( die("Eroare de conectare (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Obțineți matricea a meniului nostru din baza de date ca o funcție matrice getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Creează o matrice în care cheia matricei este ID-ul meniului $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat ) construirea unui arbore dintr-un tablou din funcția Tommy Lacroix getTree($set de date) ( $tree = array(); foreach ($dataset ca $id => &$node) ( //Dacă nu există atașamente dacă (!$node[) „parent”])( $tree[$id] = &$node; )else( //Dacă există descendenți, atunci haideți să repetăm ​​matricea $dataset[$node[„parent”]][„childs”][ $id] = &$node ) ) return $tree ) //Obțineți o matrice pregătită cu date $cat = getCat($mysqli); //Creează un meniu arbore $tree = getTree($cat); //Șablon pentru afișarea unui meniu sub forma unei funcție de arbore tplMenu($category)( $meniu = "
        ". $category["titlu"].""; if(isset($category["copii"]))( $meniu .= "
      „. showCat($category[„copii”]) .”
    • "; ) $meniu .="
        "; return $meniu; ) /** * Citiți recursiv șablonul nostru **/ function showCat($date)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $șir ) //Obțineți marcaj HTML $cat_menu = showCat($tree);
      "; ?>

      ".$cat_menu."

      Rezultatul muncii

      Meniu cu mai multe niveluri în PHP + MySQL pentru panoul de administrare Dacă doriți să utilizați acest meniu în panoul de administrare al site-ului dvs., atunci trebuie să rescrieți câteva funcții, tplMenu().

      showCat()".$category["titlu"]." ".$str." ".$category["titlu"]."< $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 ""; ?>

      ".$cat_menu."

      Selectați „. $cat_menu”.