Motor basado en base de datos en PHP

Ahora creemos un motor de sitio web en el cual el contenido de las páginas no se almacenará en archivos, sino en una base de datos. Supongamos que tenemos la siguiente tabla en la base de datos:

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

Supongamos que queremos obtener nuestras páginas mediante URLs como /page/1, donde el número representará el id de la página que queremos obtener.

Comencemos con la implementación. Primero, en un archivo separado establezcamos la conexión a la base de datos y conectemos este archivo al nuestro:

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

Obtengamos la URL solicitada:

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

Usando una expresión regular dividamos la URL en partes:

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

Guardemos el id del grupo capturado en una variable:

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

Ejecutemos una consulta a la base de datos, obteniendo la página solicitada por 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);
?>

Obtengamos el archivo de plantilla:

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

En el archivo de plantilla realicemos la inserción del título y del contenido:

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

Enviemos la página del sitio web ensamblada al navegador:

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

Juntemos todo y obtendremos el siguiente código:

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

Implemente el motor descrito. Compruebe su funcionamiento.