Menu met meerdere niveaus in PHP en MySQL. §2

In dit artikel laat ik zien hoe je kunt creëren menu met meerdere niveaus in PHP en MySQL. Je kunt natuurlijk veel opties bedenken om het te maken, maar afgaande op het aantal vragen over dit onderwerp heb je een voorbeeld nodig. En ik zal het in dit artikel geven. Ik wil meteen opmerken dat dit artikel alleen zinvol is voor degenen die het weten PHP en weet van aanpakken MySQL. Alle anderen moeten dit eerst doornemen, of er wat boeken over lezen PHP en MySQL.

Laten we eerst een tabel in de database maken met de volgende velden:

  • Identiteitskaart- unieke identificatie.
  • titel- ankerlinks in het menu.
  • link- het adres waarnaar het menu-item zal leiden.
  • ouder_id- ouder-ID. Als er geen bovenliggend item is, is het NULL (of u kunt ook 0 invullen).

We hebben de tafel uitgezocht, nu is het tijd PHP-code. Vol PHP-code staat hieronder:

$mysqli = new mysqli("localhost", "root", "", "db"); // Maak verbinding met de database
$result_set = $mysqli->query("SELECT * UIT `menu`"); // Selecteer alle records uit de tabel met het menu
$items = array(); // Array voor menu-items
while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // Vul de array met een voorbeeld uit de database
$kinderen = array(); // Array voor het matchen van onderliggende elementen met hun ouders
foreach ($items als $item) (
if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // Vul de array
}
functie printItem($item, $items, $childrens) (
/* Geef het menu-item weer */
echo "

  • ";
    echo "".$item["titel"]."";
    $ul = onwaar; // Zijn er kinderen gerenderd?
    terwijl (waar) (
    /* Een oneindige lus waarin we naar alle kinderen zoeken */
    $key = array_search($item["id"], $childrens); // Op zoek naar een onderliggend element
    als (!$sleutel) (
    /* Geen kinderen gevonden */
    als ($ul) echo ""; // Als onderliggende elementen werden weergegeven, sluit dan de lijst
    pauze; // Verlaat de lus
    }
    niet ingesteld($childrens[$sleutel]); // Verwijder het gevonden element (zodat het niet meer wordt weergegeven)
    als (!$ul) (
    echo "
      "; // Start de interne lijst als er nog geen onderliggende elementen zijn
      $ul = waar; // Zet de vlag
      }
      echo printItem($items[$key], $items, $childrens); // Geef alle onderliggende elementen recursief weer
      }
      echo "";
      }
      ?>

      Deze code werkt volledig, maar u moet begrijpen dat niemand op deze manier schrijft (in het bijzonder de uitvoer via echo HTML-tags). En jouw taak is om het algoritme uit deze code te halen, maar niet de code zelf. En koppel dit algoritme vervolgens aan uw motor. Ik heb geprobeerd de uitvoercode zorgvuldig te becommentariëren menu met meerdere niveaus in PHP en MySQL, maar het is natuurlijk niet het meest transparant en vereist een behoorlijk goede initiële kennis. Als je het nog steeds niet goed weet PHP en MySQL, dan raad ik u ten zeerste aan dit eerst door te nemen

      Als u geïnteresseerd bent in het antwoord op de vraag hoe u een websitemenu maakt, dan bent u bij ons aan het juiste adres.

      We zullen kijken naar het creëren van een dynamisch menu in PHP, speciaal geschreven voor programmeerdummies, maar ook voor degenen die nog in de tank zitten.

      Les 3. Een menu maken in php voor een dynamische website - voor dummies

      Laten we de toekomstige lay-out van onze website creëren. Hiervoor tekenen we een supermooie website in Photoshop en knippen deze in stukjes. Laten we ons voorstellen dat de koptekst, het logo, het menu en de voettekst niet in woorden zijn geschreven, zoals in dit voorbeeld, maar dat dit elegant en kleurrijk ontworpen elementen van de site zijn.

      Laten we bijvoorbeeld drie pagina's maken en deze Sectie 1, Sectie 2, Sectie 3 noemen

      Deze tekst zal voor verschillende pagina's anders zijn, maar we zullen ons er niet druk over maken en zullen hem op alle pagina's laten zoals hij is.

      Laten we beginnen met het maken van een website in PHP.

      1. Selecteer de header-, logo-, menu- en voettekstblokken in afzonderlijke bestanden met de php- of html-extensie

      koptekst.html

      logo.html

      menu.html

      voettekst.html

      Laten we een bestand met deze tekst toevoegen, zodat we deze op alle pagina's kunnen zien. Laten we hem bellen tekst.html

      Opmerking. Voortaan bewaar ik de verdere gegevens rechtstreeks in het dossier. tekst.html

      2. Laten we een sjabloon voor onze website maken in PHP.

      Om dit te doen, zullen we iets eenvoudigs doen: het echte bestand opslaan, maar met de php-extensie en alle tekstinhoud wissen. Het is misschien niet professioneel, maar het is begrijpelijk, maar we zullen alles later ingewikkelder maken. Het belangrijkste is nu om het principe van lay-out te begrijpen.

      3. Nu hebben we het template.html-bestand niet meer nodig.

      Dankzij hem hebben wij een idee hoe onze site er uit komt te zien.

      4. Onze sjabloon is het template.php-bestand

      We zullen nu alle site-elementen erin invoegen met behulp van de opdracht include.

      5. Laten we drie pagina's maken, zoals we in eerste instantie gingen doen.

      Sectie 1, laten we bellen 1.php

      Sectie 2, laten we bellen 2.php

      Sectie 3, laten we bellen 3.php

      Om dit te doen, kunt u de eenvoudigste opdracht gebruiken opslaan als...

      Laat het me uitleggen voor de kleintjes: open het bestand sjabloon.php en druk vervolgens op opslaan als... en sla het op onder de naam 1.php, herhaal de procedure en sla de sitepagina's opeenvolgend op 2.php, 3.php

      We eindigden met 3 pagina's met hetzelfde ontwerp. Plak het gewoon in plaats van een bestand tekst.html een ander, aangevuld met verschillende afbeeldingen of enkele html-codes, scripts en de inhoud van elke pagina zal uniek zijn.

      Aandacht!

      Als het bestand niet is gemaakt index.php voor de hoofdpagina, en vervolgens in de browser, door het siteadres te typen, zien we niet de site zelf, maar alleen de mappenstructuur (lijst met mappen).

      Je kunt in Denver kijken en het zelf zien. Laten we de situatie oplossen - maak een bestand index.php en laten we zonder verder oponthoud bellen Thuis. Laten we tegelijkertijd een bestand maken tekst-home.html en het commando gebruiken erbij betrekken plaats het op de nieuw gemaakte hoofdpagina van de site.

      6. Hoe bekijk ik een website in php?

      We zullen gewoon niet zien wat er is gebeurd. Dit is niet langer een sjabloon met een HTML-extensie.

      Maar ook geen probleem. We hebben onze eigen nodig, d.w.z. lokale server op uw computer. Om dit te doen, installeren we Denver en bekijken we het resultaat van ons werk in een browser zonder online te gaan.

      Dat is nu de volgorde. Ik typte het siteadres in en zag alles wat zojuist in een normale vorm met ontwerp was gemaakt.

      Laten we nu het PHP-menu van de site bekijken.

      1. Open het bestand menu.html en verander secties 1, 2 en 3 in links op de site. Koppelingen in PHP worden op verschillende manieren gemaakt.

      Onze taak is om te leren hoe je de site kunt voelen die in PHP is gemaakt. Daarom zullen we links maken zoals op een gewone statische site, sectie 1, enz.

      Ik ben absoluut dol op dit proces voor het maken van links in Macromedia Dreamweaver. Heb tijd om te oogsten OK en koffie drinken.

      2. Hoe u een link in het menu inactief kunt maken als de bezoeker zich op deze pagina bevindt.

      Het is voor de bezoeker handiger om door de site te navigeren, wetende op welke pagina hij zich bevindt.

      Als je alle stappen punt voor punt strikt hebt gevolgd, zul je zien dat alle links in het menu constant actief zijn. Hoe dit op te lossen?

      Laten we eerst de definitie onthouden van wat het is Voorwaardelijke uitspraken

      – dit is wanneer een actie wel of niet wordt uitgevoerd, afhankelijk van de omstandigheden.

      Laten we het volgende doen:

      • We zullen nodig hebben variabelen en één voorwaardelijke operator:

      if ($master == "Hoofd")// dit is een voorwaarde. Als het wordt uitgevoerd, worden op deze plaats van het menu met behulp van de echo-opdracht gewone HTML-tags ingevoegd die de inscriptie "Home" weergeven.

      echo "

      Thuis

      ";

      anders// betekent “anders” - wat er zal gebeuren als niet aan de voorwaarde wordt voldaan. In dit geval, als niet aan de voorwaarde wordt voldaan, is de inscriptie "Home" een link die naar de hoofdpagina leidt.

      echo "

      Thuis

      ";

      • We hebben de voorwaarde bedacht, maar dat controleer de variabeleje moet het vragen.

      Om dit te doen, plaatsen we de volgende codeblokken op alle pagina’s:

      $master = "Hoofd";

      $master = "Sectie 1";

      $master = "Sectie 2";

      $master = "Sectie 3";

      Zoals u kunt zien, heeft elke pagina zijn eigen code.

      Onze praktische stappen voor het maken van een PHP-menu zijn dus als volgt:

      1) Open het bestand index.php

      en plak de code

      $master = "Hoofd";

      naar de plaats waar u de code invoegt die het sitemenu zelf weergeeft neem "menu.html" op;
      ?>

      2) Open het bestand menu.html en voeg de code in met de voorwaarde in plaats van een eenvoudige html-link naar de hoofdpagina.

      We kijken in de browser en bewonderen! Als we naar de hoofdpagina gaan, is de link niet langer actief!

      3) Herhaal punt 1 en 2 met pagina's 1.php, 2.php, 3.php

      Herhaling 1:

      1) Open het bestand 1.php en plaats vóór de code die het menublok met de opgegeven variabele weergeeft

      $master = "Sectie 1";

      2) Open het menu.html-bestand en voeg de code in met de voorwaarde in plaats van een eenvoudige link Sectie 1, waarbij de volgende wijzigingen worden aangebracht:

      if ($master == "Sectie 1")// dit is een voorwaarde. Als het wordt uitgevoerd, worden op deze plaats van het menu met behulp van de echo-opdracht gewone HTML-tags ingevoegd die de inscriptie "Sectie 1" weergeven.

      echo "

      Sectie 1

      ";

      anders// betekent “anders” - wat er zal gebeuren als niet aan de voorwaarde wordt voldaan. In dit geval, als niet aan de voorwaarde wordt voldaan, is de inscriptie "Sectie 1" een link die naar de hoofdpagina leidt.

      echo "

      Sectie 1

      ";

      Het wonder gebeurde opnieuw! Als we nu op de pagina zijn Sectie 1, de link in het menu is niet actief.

      Herhaling is de moeder van leren! Of voor degenen in de tank! Opnieuw

      Herhaling 2

      1) Openen bestand 2.php en plak de code.

      $master = "Sectie 2";

      2) Open het bestand menu.html opnieuw en plak de code met de voorwaarde

      if ($master == "Sectie 2")// dit is een voorwaarde. Als het wordt uitgevoerd, worden op deze plaats van het menu met behulp van de echo-opdracht gewone HTML-tags ingevoegd die de inscriptie "Sectie 2" weergeven.

      echo "

      Sectie 2

      ";

      anders// betekent “anders” - wat er zal gebeuren als niet aan de voorwaarde wordt voldaan. In dit geval, als niet aan de voorwaarde wordt voldaan, zal de inscriptie "Sectie 2" een link zijn die naar de hoofdpagina leidt.

      echo "

      Sectie 2

      ";

      Herhaling 3

      1) Opening bestand 3.php en stel de variabele in.

      $master = "Sectie 3";

      2) In het menu.html-bestand voegen we de code in met een voorwaarde in plaats van een link Sectie 3, de wijzigingen zijn:

      if ($master == "Sectie 3")// dit is een voorwaarde. Als het wordt uitgevoerd, worden op deze plaats van het menu met behulp van de echo-opdracht gewone HTML-tags ingevoegd die de inscriptie "Sectie 3" weergeven.

      echo "

      Sectie 3

      ";

      anders// betekent “anders” - wat er zal gebeuren als niet aan de voorwaarde wordt voldaan. In dit geval, als niet aan de voorwaarde wordt voldaan, zal de inscriptie "Sectie 3" een link zijn die naar de hoofdpagina leidt.

      echo "

      Sectie 3

      ";

      Kortom: wij in plaats van links in dit type menu

      Thuis


      Sectie 1

      Sectie 2


      Sectie 3

      Deze les over php is geschreven naar aanleiding van talrijke verzoeken van sitebezoekers en is een praktische gids voor het leren maken van een dynamisch menu voor een site in php.

      Het spiekbriefje van de volgende webmaster zal u vertellen hoe u voor elke pagina in PHP unieke titels, beschrijvingen en trefwoorden kunt maken.

      U kunt een archief downloaden met alle sitesjabloon- en PHP-menubestanden. Aanbevolen voor mensen die nieuw zijn met programmeren.

      Als je klaar bent om PHP serieus te studeren, dan is het moeilijk om een ​​betere videocursus van Popov te vinden. Hij heeft veel ervaring en een goede stijl.

      ]]> ]]>

      Omdat het de inhoud van de menu.php-module blootlegt. Hieronder presenteren we onze eigen menuontwikkeling in PHP, die helemaal opnieuw is geschreven in Kladblok.

      Deze code is vooral handig voor dynamische sites met aangepaste zoekmachines. Ik zal twee code-opties aanbieden die kleine verschillen hebben (de verschillen zullen later worden uitgelegd).

      Om te beginnen zal ik een geschatte structuur geven van de site waarvoor dit menu geschikt is. De sitestructuur zou er als volgt uit moeten zien (klassieke weergave):

      /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

      De site kan ook subsecties voor secties bevatten:

      /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

      Deze structuur werkt ook voor ons menu, met slechts kleine verschillen.

      Ik stel voor om een ​​apart bestand voor het menu in php te maken. Menu.php zou bijvoorbeeld een goede naam zijn voor zo'n bestand. Om het menu te implementeren wordt er ook een menustijl in CSS voorzien om het meteen min of meer mooi te maken. Uiteraard wordt deze stijl alleen ter referentie gegeven, omdat de ontwerpen van de sites heel verschillend zijn.

      Code voor menustijl in CSS:

      .menu ( hoogte:42px; vulling:0 0 0 16px; achtergrond:url(images/spacer.png) repeat; ) .menu li ( display:block; float:left; ) .menu li.active ( achtergrond: #000011 ; ) .menu a ( kleur:#FFF; weergave:blok; lijnhoogte:42px; tekstdecoratie: geen; opvulling:0 14px; ) .menu a:hover ( achtergrond:url(images/spacer.png) herhalen ;)

      Laten we nu eens kijken naar de eerste optie voor het implementeren van een menu in PHP, die een beetje vereenvoudigd is.

      De eerste versie van de menucode in PHP

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

    Het menu kan in twee delen worden verdeeld. De eerste bevat de informatiearray $array_menu, die de namen van onze secties bevat met links naar secties. Er is een optie om deze gegevens in de mySQL-database in te voeren, maar dit heeft geen bijzonder nut, aangezien de steekproef erg klein is, dus dit heeft geen invloed op de snelheid van het werk.

    Het tweede deel bevat de uitvoer van het menu via een for-lus. De cyclus vergelijkt het siteadres met het adres uit de array $array_menu. Als er een match is, tonen we het volgende menugedeelte met een speciale actieve klasse:

  • , anders gewoon
  • . Hierdoor kunnen we het deel van het menu waarin de gebruiker zich bevindt met wat kleur markeren. Naar mijn mening is dit noodzakelijk voor elke site, zodat de gebruiker kan begrijpen in welke sectie hij zich bevindt.

    De volgorde in de array blijft behouden wanneer het menu op de site wordt weergegeven. Dat wil zeggen dat de array moet worden gevuld in de volgorde waarin het menu moet worden weergegeven.

    Opmerking:
    Als de URL's (adressen) van de sectiekoppen er als volgt uitzien:
    /sectie_1
    of zoals dit
    /razdel_1/nazvanie_razdela.html
    dan moet je een exacte match in array_menu schrijven:
    $array_menu[$i]["url"]="/razdel_1"
    of voor het tweede geval:
    $array_menu[$i]["url"]="/razdel_1/nazvanie_razdela.html";

    Hoe werkt de eerste menuoptie?
    Het markeert alleen het menu als u zich op het sectiekopadres bevindt. Als het paginaadres bijvoorbeeld /razdel_1/articles_1.html is, wordt het menu op geen enkele manier gemarkeerd.

    De tweede versie van de code is een aangepaste versie van de eerste en biedt de mogelijkheid om menu's te markeren, zelfs in artikelen die zich in secties bevinden.

    De tweede versie van de menucode in PHP

    "; voor ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["titel"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["titel"]."
  • ";)) echo""; ?>
    23 april 2017

    In eerdere lessen hebben we gekeken naar voorbeelden van wat arrays zijn. In deze tutorial gaan we in de praktijk arrays gebruiken om een ​​menu op een website te maken.

    Waarom zijn ze handiger dan gewone HTML-tags?

    Laten we zeggen dat onze site 100 pagina's heeft, die allemaal hetzelfde menu hebben. En plotseling moesten we menu-items wijzigen. Door alleen HTML te gebruiken, zullen we 100 pagina's van de site moeten bewerken, wat veel is. Dus PHP komt ons in dergelijke situaties te hulp. Het is voldoende om de menu-items slechts één keer in één bestand te wijzigen.

    Laten we nu gaan.

    Op lokale hosting in de map “ domeinen maak een map met de naam “ reeks- menu. lokaal”.

    In deze map maken we vier bestanden aan: index. php, over. php, contact. php En menu. php.

    !!! De bestandssyntaxis moet zijnPHP.

    In het index.php-bestand schrijven we een eenvoudig HTML-framework.




    charset = "utf-8" >



    Thuis


    erbij betrekken("menu.php");
    ?>



    Kopieer deze code naar de about.php- en contact.php-bestanden. We veranderen alleen de paginanamen in de tag

    .

    We schrijven code voor het menu.

    In bestand menu.php schrijf een associatieve array.

    $menu= reeks (
    "index "=> "index.php",
    "over" => "over.php",
    "contacten" => "contact.php"
    );
    ?>

    Hieronder schrijven we een menu met behulp van HTML-tags.

    In de browser zien we een normaal menu in de vorm van een lijst.

    Door op een menu-item te klikken, gaan we naar de overeenkomstige pagina en staat het menu op alle pagina's.

    Laten we de taak nu ingewikkelder maken. We verwijderen alles uit het bestand menu.php En...

    We schrijven een multidimensionale array.




    charset = "utf-8" >
    <span>Een array gebruiken om een ​​menu op een website weer te geven.</span>


    $menu= reeks (
    reeks("link" => "Thuis", "href"=> "index.php"),
    reeks("link" => "Over ons", "href"=> "over.php"),
    reeks("link" => "Contacten", "href"=> "contact.php")
    );
    ?>





    En in de laatste fase...

    Een menu tekenen met behulp van een lus voorleggen.

    De lijst verwijderen uit het menu.php-bestand

      en schrijf in plaats daarvan de volgende code.

      echo"

        " ;
        voorleggen($menu als$item)(
        echo "
      • ($artikel)
      • " ;
        }

        In de browser zien we hetzelfde resultaat.

        Om menu-items te wijzigen, wijzigt u ze gewoon in het bestand menu.php slechts één keer.

        Geen enkele website is compleet zonder navigatie of, zoals ze het ook wel noemen, een ‘sitemenu’. Het sitemenu kan dus één niveau of meerdere niveaus hebben in de vorm van een boom. Als er geen bijzondere problemen zijn bij de implementatie van een menu met één niveau, moet u bij het maken van een menu met meerdere niveaus goed nadenken.

        Het belangrijkste bij deze taak is het ontwerpen van de database voor ons menu met meerdere niveaus. Laten we een Categorieën-tabel maken met drie velden Identiteitskaart, titel, ouder Waar:

        • Identiteitskaart- identificatie
        • Titel- Menunaam
        • Ouder- Standaard bovenliggende categorie 0

        Het veld is verantwoordelijk voor de vertakking van het menu Ouder Als Ouder = 0, dan is deze categorie de bovenliggende categorie. Om afstammelingen aan de bovenliggende categorie toe te voegen, moet u dit in het bovenliggende veld opgeven Identiteitskaart de juiste ouder. Bijvoorbeeld:

        Tabellen met categorieën

        Zoals uit de tabel blijkt, de bovenliggende categorie Auto's er zijn twee nakomelingen - dit is Mazda En Honda per vakgebied gerelateerd Ouder. En de categorie motorfietsen twee nakomelingen zijn Kawasaki En Harley. Tegelijkertijd kent de categorie Boten geen nakomelingen. Ik hoop dat je begrijpt hoe je categorieën kunt koppelen.

        Vervolgens gaan we van woorden naar praktijk. Laten we een Categorieën-tabel maken.

        MAAK TABEL INDIEN NIET BESTAAT `categorieën` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `parent` int(10) unsigned NOT NULL, PRIMARY KEY (`id`)) ENGINE=MijnISAM STANDAARD CHARSET=utf8 AUTO_INCREMENT=20; -- -- Dump tabelgegevens `categorieën` -- INSERT INTO `categorieën` (`id`, `title`, `parent`) VALUES (1, "Auto's", 0), (2, "Motorfietsen", 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, "Boten", 0), (12, "Liftback", 8), (13, "Crossover", 8), (14, "Wit", 13), (15, "Rood", 13), (16, "Zwart", 13), (17, "Groen", 13), (18, "Mazda CX", 3), (19, "Mazda MX", 3);

        Het werkalgoritme bestaat uit het volgende:

        Maak een verbinding met de database

        query("NAMEN INSTELLEN "utf8""); /* * Dit is de "officiële" objectgeoriënteerde manier om dit te doen * $connect_error werkte echter pas in PHP-versies 5.2.9 en 5.3.0.

        */ if ($mysqli->connect_error) ( die("Verbindingsfout (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Als u zeker wilt zijn van compatibiliteit met versies vóór 5.2 .9, * is het beter om deze code te gebruiken */ if (mysqli_connect_error()) ( die("Verbindingsfout (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

        Een functie schrijven om gegevens uit de tabel Categorieën op te halen

        //Haal de array van ons menu uit de database als een arrayfunctie getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Maak een array waar de sleutel van de array is, is het menu-ID $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $kat)

        We krijgen een array als deze, waarbij de arraysleutel de categorie-ID is.

        Massief houten bouwfunctie van Tommy Lacroix

        //Functie voor het bouwen van een boom uit een array van de Tommy Lacroix-functie getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //Als er geen bijlagen zijn if ( !$node[" parent"])( $tree[$id] = &$node; )else( //Als er onderliggende elementen zijn, herhaal dan de array $dataset[$node["parent"]]["childs "][$id] = &$ node; ) return $tree;

        We krijgen een array in de vorm van een boom

        query("NAMEN INSTELLEN "utf8""); /* * Dit is de "officiële" objectgeoriënteerde manier om dit te doen * $connect_error werkte echter pas in PHP-versies 5.2.9 en 5.3.0.
      • */ if ($mysqli->connect_error) ( die("Verbindingsfout (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Als u zeker wilt zijn van compatibiliteit met versies vóór 5.2 .9, * is het beter om deze code te gebruiken */ if (mysqli_connect_error()) ( die("Verbindingsfout (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Haal de array op van ons menu uit de database als een array-functie getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Maak een array waarin de array-sleutel is het menu-ID $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat ) //Functie voor een boom bouwen op basis van een array met de Tommy Lacroix-functie getTree($dataset) ( $tree = array(); foreach ($dataset as $id => &$node) ( //Als er geen bijlagen zijn if (!$node[ "parent"])( $tree[$id] = &$node; )else( //Als er nakomelingen zijn, laten we dan de array $dataset[$node["parent"]]["childs"][ doorlopen $id] = &$node ) ) return $tree ) // Haal een voorbereide array op met gegevens $cat = getCat($mysqli); //Maak een boommenu $tree = getTree($cat); //Sjabloon voor het weergeven van een menu in de vorm van een boomfunctie tplMenu($category)( $menu = "
          ". $category["titel"].""; if(isset($category["childs"]))( $menu .= "
        ". showCat($category["childs"]) ."
      • "; ) $menu.= "
          "; return $menu; ) /** * Lees onze sjabloon recursief **/ function showCat($data)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $string; //HTML-opmaak ophalen $cat_menu = showCat($tree);
        "; ?>

        ".$cat_menu."

        Resultaat van werk

        Menu met meerdere niveaus in PHP + MySQL voor beheerderspaneel Als u dit menu in het beheerderspaneel van uw site wilt gebruiken, moet u een aantal functies herschrijven, tplMenu().

        toonCat()".$categorie["titel"]." ".$str." ".$categorie["titel"]."< $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."

        Selecteer ". $cat_menu."

  • 
    2024, leally.ru - Uw gids in de wereld van computers en internet