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:
| 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:
<?php
$link = require 'connect.php';
?>
Dapatkan URL yang diminta:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Dengan menggunakan ekspresi reguler, pisahkan URL menjadi beberapa bagian:
<?php
preg_match('#/page/(\d+)#', $url, $match);
?>
Tuliskan id dari capture group ke dalam variabel:
<?php
$id = $match[1];
?>
Eksekusi query ke database, dapatkan halaman yang diminta
berdasarkan id:
<?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:
<?php
$layout = file_get_contents('layout.php');
?>
Dalam file template, lakukan penyisipan judul dan konten:
<?php
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
?>
Kirim halaman situs web yang telah dirakit ke browser:
<?php
echo $layout;
?>
Mari satukan semuanya dan kita dapatkan kode berikut:
<?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;
?>
Implementasikan mesin yang dijelaskan. Uji cara kerjanya.