⊗ppPmSDRSP 446 of 447 menu

Veelvoudige parameters in roetes van 'n PHP enjin

Gestel ons het nou kategorieë op ons webwerf en bladsye wat aan hierdie kategorieë behoort. Kom ons maak 'n tabel met kategorieë:

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

En 'n tabel met bladsye:

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 ons webwerf laat ons toe dat die slugs van bladsye uit verskillende kategorieë ooreenstem. Dit beteken dat ons in die URL eers die kategorie-slug moet spesifiseer, en dan die bladsy-slug volgens die volgende skema: /page/:category/:page, waar die kolon aandui waar die veranderlike parameters sal wees.

Kom ons skryf die roetes vir ons webwerf:

<?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 die verwerker van die eerste roete sal ons die versoekte bladsy wys:

<?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 die verwerker van die tweede roete sal ons 'n lys van bladsye uit die gespesifiseerde kategorie wys:

<?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' => 'lys van alle bladsye in kategorie ' . $catSlug, 'content' => $content ]; return $page; ?>

Gestel jy het 'n webwerf met stede en lande. Laat by die adres / 'n lys van alle lande vertoon word, by die adres /:country word 'n lys van stede van die land wat in die parameter gespesifiseer is vertoon, en by die adres /:country/:city die beskrywing van die gespesifiseerde stad.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp