Databázový engine v PHP
Teraz vytvorme engine webu, v ktorom sa obsah stránok nebude ukladať v súboroch, ale v databáze. Predpokladajme, že v databáze máme nasledujúcu tabuľku:
| id | title | content |
|---|---|---|
| 1 | title1 | <div> content1 </div> |
| 2 | title2 | <div> content2 </div> |
| 3 | title3 | <div> content3 </div> |
Predpokladajme, že chceme naše stránky získať
pomocou URL adries typu /page/1, kde číslo bude
predstavovať id stránky,
ktorú chceme získať.
Poďme na implementáciu. Najprv v samostatnom súbore vytvorme pripojenie k databáze a pripojme tento súbor k nášmu:
<?php
$link = require 'connect.php';
?>
Získajme požadovanú URL:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Pomocou regulárneho výrazu rozdeľme URL na časti:
<?php
preg_match('#/page/(\d+)#', $url, $match);
?>
Zapíšme id z zachytenej skupiny do premennej:
<?php
$id = $match[1];
?>
Vykonajme dopyt do databázy, kde podľa id
získame požadovanú stránku:
<?php
$query = "SELECT * FROM pages WHERE id=$id";
$res = mysqli_query($link, $query) or die(mysqli_error($link));
$page = mysqli_fetch_assoc($res);
?>
Získajme súbor šablóny:
<?php
$layout = file_get_contents('layout.php');
?>
V súbore šablóny vykonajme vloženie titulu a obsahu:
<?php
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
?>
Odošleme zostavenú stránku webu do prehliadača:
<?php
echo $layout;
?>
Spojíme všetko dokopy a získame nasledujúci kód:
<?php
require 'connect.php';
$url = $_SERVER['REQUEST_URI'];
preg_match('#/page/(\d+)#', $url, $match);
$id = $match[1];
$query = "SELECT * FROM pages WHERE id=$id";
$res = mysqli_query($link, $query) or die(mysqli_error($link));
$page = mysqli_fetch_assoc($res);
$layout = file_get_contents('layout.php');
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
echo $layout;
?>
Realizujte popísaný engine. Otestujte jeho činnosť.