⊗ppPmSDRt 444 of 447 menu

PHP dasturida oddiy routing

Oldingi darsda bizning saytimizda faqat bitta URL guruhi mavjud edi. Albatta, odatda saytda bir nechta turdagi manzillar bo'ladi.

Har bir manzillar guruhi o'zining muntazam ifodasi bilan qayta ishlanadi, ular route deb ataladi. Shunga mos ravishda routelar va ularni qayta ishlash uchun kodni moslashtirish jarayoni routing deb ataladi.

Faraz qilaylik, masalan, bizda ikkita turdagi manzillar mavjud. Keling, har bir guruh uchun o'z routingini yozamiz:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // slug bo'yicha bitta sahifa } if (preg_match('#^/page/all$#', $url, $params)) { // barcha sahifalar ro'yxati } ?>

Qulaylik uchun har bir routingni qayta ishlash kodini alohida faylga chiqaramiz:

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

Ulanish fayllari o'z natijasi sifatida sahifa sarlavhasi va kontentidan iborat massivni qaytarishi kerak.

Keling, uning slug'i bo'yicha bitta sahifani chiqaradigan birinchi fayl kodini yozamiz:

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

Endi barcha sahifalarga havolalar ro'yxatini chiqaradigan ikkinchi fayl kodini yozamiz:

<?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' => 'barcha sahifalar', 'content' => $content ]; return $page; ?>

Shartlardan birini bajarilishidan so'ng o'zgaruvchida $page har doim bitta tuzilishdan iborat massiv bo'ladi. Ushbu massivdan sayt shablonida sarlavha va kontentni almashtirish uchun foydalanamiz:

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

Keling hammasini birlashtiramiz va quyidagi kodni olamiz:

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

Faraz qilaylik, sizda foydalanuvchilar bilan sayt mavjud. Bitta foydalanuvchini ko'rsatish sahifasi, barcha foydalanuvchilarni chiqarish sahifasi va yangi foydalanuvchi qo'shish uchun forma sahifasini yarating.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish