Mesin Berbasis Database di PHP

Sekarang mari kita buat mesin situs web di mana konten halaman akan disimpan bukan dalam file, melainkan dalam database. Misalkan kita memiliki tabel seperti berikut dalam database:

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

Misalkan kita ingin mendapatkan halaman kita melalui URL seperti /page/1, di mana angka tersebut akan merepresentasikan id dari halaman yang ingin kita dapatkan.

Mari kita mulai implementasinya. Pertama, dalam file terpisah buatlah koneksi ke database dan sambungkan file tersebut ke file kita:

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

Dapatkan URL yang diminta:

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

Dengan menggunakan ekspresi reguler, pisahkan URL menjadi beberapa bagian:

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

Tuliskan id dari capture group ke dalam variabel:

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

Eksekusi query ke database, dapatkan halaman yang diminta berdasarkan id:

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

Dapatkan file template:

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

Dalam file template, lakukan penyisipan judul dan konten:

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

Kirim halaman situs web yang telah dirakit ke browser:

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

Mari satukan semuanya dan kita dapatkan kode berikut:

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

Implementasikan mesin yang dijelaskan. Uji cara kerjanya.