⊗ppPmSDRt 444 of 447 menu

Просты роўтынг у рухавіку на PHP

У папярэднім уроку на нашым сайце была толькі адна група ўрлаў. Вядома ж, звычайна на сайце бывае некалькі тыпаў адрасоў.

Кожная група адрасоў будзе апрацоўвацца свой рэгулярны выраз, якія называюцца роўтамі. Адпаведна працэс супастаўлення маршрутаў і кода для іх апрацоўкі называецца роўтынгам.

Хай, напрыклад, у нас ёсць два тыпы адрасоў. Давайце для кожнай групы напішам свой роўт:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // адна старонка па слагу } if (preg_match('#^/page/all$#', $url, $params)) { // спіс усіх старонак } ?>

Для зручнасці вынясем код апрацоўкі кожнага роўта ў асобны файл:

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

Свой вынікам файлы, што падключаюцца, павінны вяртаць масіў з тайтлам і кантэнтам старонкі.

Давайце напішам код першага файла, які выводзіць адну старонку па яе слагу:

<?php $slug = $params[1]; $query = "SELECT * FROM pages WHERE slug='$slug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); $page = mysqli_fetch_assoc($res); return $page; ?>

А цяпер напішам код другога файла, які выводзіць спіс спасылак на ўсе старонкі:

<?php $query = "SELECT slug, title FROM pages"; $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/' . $page['slug'] . '">' . $page['title'] . '</a> </div> '; } $page = [ 'title' => 'all pages', 'content' => $content ]; return $page; ?>

Пасля выканання аднаго з умоў у зменнай $page заўсёды будзе масіў з адной структуры. Выкарастаем гэты масіў, каб падставіць тайтл і кантэнт у шаблон сайта:

<?php $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Сабяром усё разам і атрымаем наступны код:

<?php $url = $_SERVER['REQUEST_URI']; if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Хай у вас ёсць сайт з карыстальнікамі. Зрабіце старонку для паказу аднаго карыстальніка, старонку для вываду ўсіх карыстальнікаў і старонку з формай для дадання новага карыстальніка.

Беларуская
AfrikaansAzə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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць