⊗ppPmSDRSP 446 of 447 menu

Mehrere Parameter in Routen der Engine in PHP

Nehmen wir an, dass unsere Website nun Kategorien und Seiten hat, die diesen Kategorien zugeordnet sind. Lassen Sie uns eine Tabelle mit Kategorien erstellen:

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

Und eine Tabelle mit Seiten:

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

Auf unserer Website erlauben wir, dass die Slugs von Seiten aus verschiedenen Kategorien übereinstimmen können. Das bedeutet, dass wir in der URL zuerst den Slug der Kategorie und dann den Slug der Seite angeben müssen, und zwar nach diesem Schema: /page/:category/:page, wobei die Doppelpunkte die Stellen kennzeichnen, an denen sich die veränderlichen Parameter befinden.

Lassen Sie uns die Routen für unsere Website schreiben:

<?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'; } ?>

Im Handler der ersten Route zeigen wir die angeforderte Seite an:

<?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; ?>

Im Handler der zweiten Route zeigen wir die Liste der Seiten aus der angegebenen Kategorie an:

<?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' => 'Liste aller Seiten der Kategorie ' . $catSlug, 'content' => $content ]; return $page; ?>

Nehmen wir an, Sie haben eine Website mit Städten und Ländern. Unter der Adresse / soll eine Liste aller Länder ausgegeben werden, unter der Adresse /:country die Liste der Städte des im Parameter angegebenen Landes und unter der Adresse /:country/:city die Beschreibung der angegebenen Stadt.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen