Injini ya Tovuti kwa kutumia Database katika PHP

Sasa hebu tutengeneze injini ya tovuti ambayo yaliyomo katika kurasa hazitahifadhiwa kwenye faili, bali kwenye database. Hebu tuseme kwenye database yetu kuna jedwali kama hii:

pages
id title content
1 title1 <div> content1 </div>
2 title2 <div> content2 </div>
3 title3 <div> content3 </div>

Tuseme tunataka kupata kurasa zetu kwa anuwai ya URL kama /page/1, ambapo nambari itakuwa inawakilisha id ya kurasa ile ambayo tunataka kupata.

Wacha tuanze utekelezaji. Kwanza, kwenye faili tofauti tutafanya muunganisho na database na kuiunganisha faili hiyo kwa yetu:

index.php<?php
  $link = require 'connect.php';
?>

Tutapata URL iliyoombwa:

index.php<?php
  $url = $_SERVER['REQUEST_URI'];
?>

Kwa kutumia usemi wa kawaida tutagawanya URL katika sehemu:

index.php<?php
  preg_match('#/page/(\d+)#', $url, $match);
?>

Tutaandika id kutoka kwenye mfuko kwenye kutofautisha:

index.php<?php
  $id = $match[1];
?>

Tutafanya ombi kwa database, kwa id kupata kurasa iliyoombwa:

index.php<?php
  $query = "SELECT * FROM pages WHERE id=$id";
  $res = mysqli_query($link, $query) or die(mysqli_error($link));
  $page = mysqli_fetch_assoc($res);
?>

Tutapata faili ya kiolezo:

index.php<?php
  $layout = file_get_contents('layout.php');
?>

Kwenye faili ya kiolezo tutafanya uingizwaji wa kichwa na yaliyomo:

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

Tutatuma kurasa iliyokusanywa ya tovuti kwenye kivinjari:

index.php<?php
  echo $layout;
?>

Tutakusanya yote pamoja na kupata msimbo ufuatao:

index.php<?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;
?>
Задание 1

Tekeleza injini iliyoelezewa. Jaribu utendaji wake.