⊗ppPmSDRSP 446 of 447 menu

Πολλαπλές παράμετροι στις διαδρομές της μηχανής σε PHP

Ας υποθέσουμε ότι τώρα ο ιστότοπός μας έχει κατηγορίες και σελίδες που ανήκουν σε αυτές τις κατηγορίες. Ας δημιουργήσουμε έναν πίνακα με τις κατηγορίες:

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

Και έναν πίνακα με τις σελίδες:

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

Στον ιστότοπό μας επιτρέπουμε τα slugs των σελίδων από διαφορετικές κατηγορίες να συμπίπτουν. Αυτό σημαίνει ότι στο URL πρέπει πρώτα να καθορίσουμε το slug της κατηγορίας και μετά το slug της σελίδας σύμφωνα με το ακόλουθο σχήμα: /page/:category/:page, όπου με άνω και κάτω τελεία υποδεικνύονται οι θέσεις στις οποίες θα υπάρχουν μεταβαλλόμενες παράμετροι.

Ας γράψουμε τις διαδρομές για τον ιστότοπό μας:

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

Σ τον χειριστή της πρώτης διαδρομής θα εμφανίζουμε τη ζητούμενη σελίδα:

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

Σ τον χειριστή της δεύτερης διαδρομής θα εμφανίζουμε τη λίστα των σελίδων από την καθορισμένη κατηγορία:

<?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' => 'λίστα όλων των σελίδων της κατηγορίας ' . $catSlug, 'content' => $content ]; return $page; ?>

Ας υποθέσουμε ότι έχετε έναν ιστότοπο με πόλεις και χώρες. Ας υποθέσουμε ότι στη διεύθυνση / εμφανίζεται μια λίστα όλων των χωρών, στη διεύθυνση /:country εμφανίζεται μια λίστα των πόλεων της καθορισμένης στη παράμετρο χώρας, και στη διεύθυνση /:country/:city η περιγραφή της καθορισμένης πόλης.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη