⊗ppPmSDRSP 446 of 447 menu

Meerdere parameters in route van de engine in PHP

Stel dat we nu categorieën op onze website hebben en pagina's die tot deze categorieën behoren. Laten we een tabel met categorieën maken:

categories
id slug name
1 first-category name1
2 second-category name2

En een tabel met pagina's:

pages
id slug title content category_id
1 my-first-page title1 <div> content1 </div> 1
2 my-second-page title2 <div> content2 </div> 1
3 my-third-page title3 <div> content3 </div> 2

Op onze website staan we toe dat slugs van pagina's uit verschillende categorieën overeenkomen. Dit betekent dat we in de URL eerst de slug van de categorie moeten specificeren, en dan de slug van de pagina volgens dit schema: /page/:category/:page, waar de dubbele punten de plaatsen aangeven waar de veranderende parameters zullen staan.

Laten we routes voor onze website schrijven:

<?php $route = '^/page/(?<catSlug>[a-z0-9_-]+)/(?<pageSlug>[a-z0-9_-]+) ; if (preg_match("#$route#", $url, $params)) { $page = include 'view/page/show.php'; } $route = '^/page/(?<catSlug>[a-z0-9_-]+) ; if (preg_match("#$route#", $url, $params)) { $page = include 'view/page/category.php'; } $route = '^/ ; if (preg_match("#$route#", $url, $params)) { $page = include 'view/page/all.php'; } ?>

In de handler van de eerste route zullen we de gevraagde pagina tonen:

<?php $catSlug = $params['catSlug']; $pageSlug = $params['pageSlug']; $query = "SELECT pages.title, pages.content FROM pages LEFT JOIN category ON category.id=pages.category_id WHERE pages.slug='$pageSlug' AND category.slug='$catSlug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); $page = mysqli_fetch_assoc($res); return $page; ?>

In de handler van de tweede route zullen we de lijst met pagina's uit de opgegeven categorie tonen:

<?php $catSlug = $params['catSlug']; $query = "SELECT pages.slug, pages.title FROM pages LEFT JOIN category ON category.id=pages.category_id WHERE category.slug='$catSlug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row); $content = ''; foreach ($data as $page) { $content .= ' <div> <a href="/page/' . $catSlug . '/' . $page['slug'] . '">' . $page['title'] . '</a> </div> '; } $page = [ 'title' => 'lijst van alle pagina\'s in categorie ' . $catSlug, 'content' => $content ]; return $page; ?>

Stel dat je een website hebt met steden en landen. Laat op adres / de lijst van alle landen zien, op adres /:country de lijst met steden van het in de parameter opgegeven land, en op adres /:country/:city de beschrijving van de opgegeven stad.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren