Andmebaasipõhine mootor PHP-s
Teeme nüüd veebimootori, kus lehtede sisu ei salvestata failidesse, vaid andmebaasis. Oletame, et meil on andmebaasis järgmine tabel:
| id | title | content |
|---|---|---|
| 1 | title1 | <div> content1 </div> |
| 2 | title2 | <div> content2 </div> |
| 3 | title3 | <div> content3 </div> |
Oletame, et soovime saada oma lehti
URL-ide abil kujul /page/1, kus number tähistab
selle lehe id-d,
mida soovime saada.
Alustame rakendamist. Kõigepealt teeme eraldi failis andmebaasi ühenduse ja ühendame selle faili oma failiga:
<?php
$link = require 'connect.php';
?>
Saame päritud URL-i:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Kasutades regulaaravaldist, jagame URL-i osadeks:
<?php
preg_match('#/page/(\d+)#', $url, $match);
?>
Kirjutame id grupist muutujasse:
<?php
$id = $match[1];
?>
Teostame päringu andmebaasi, saades id
alusel päritud lehe:
<?php
$query = "SELECT * FROM pages WHERE id=$id";
$res = mysqli_query($link, $query) or die(mysqli_error($link));
$page = mysqli_fetch_assoc($res);
?>
Saame mallifaili:
<?php
$layout = file_get_contents('layout.php');
?>
Mallifailis teostame pealkirja ja sisu asendamise:
<?php
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
?>
Saadame koostatud veebilehe brauserisse:
<?php
echo $layout;
?>
Kogume kõik kokku ja saame järgmise koodi:
<?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;
?>
Rakendage kirjeldatud mootor. Kontrollige selle toimimist.