PHP में डेटाबेस आधारित इंजन

आइए अब एक वेबसाइट इंजन बनाते हैं, जिसमें पृष्ठों की सामग्री फाइलों में नहीं, बल्कि डेटाबेस में संग्रहीत रहेगी। मान लीजिए कि हमारे डेटाबेस में निम्नलिखित तालिका है:

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

मान लीजिए कि हम अपने पृष्ठों को /page/1 जैसे URL के माध्यम से प्राप्त करना चाहते हैं, जहाँ संख्या उस पृष्ठ का id होगी, जिसे हम प्राप्त करना चाहते हैं।

आइए कार्यान्वयन शुरू करते हैं। सबसे पहले एक अलग फाइल में डेटाबेस से कनेक्शन बनाते हैं और उस फाइल को हमारी फाइल में शामिल करते हैं:

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

अनुरोधित URL प्राप्त करते हैं:

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

रेगुलर एक्सप्रेशन का उपयोग करके URL को भागों में विभाजित करते हैं:

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

कैप्चर ग्रुप से id को एक वेरिएबल में लिखते हैं:

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

डेटाबेस को क्वेरी निष्पादित करते हैं, 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);
?>

टेम्पलेट फाइल प्राप्त करते हैं:

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

टेम्पलेट फाइल में शीर्षक और सामग्री डालते हैं:

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

एसेंबल की गई वेबसाइट पेज को ब्राउज़र में भेजते हैं:

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

सब कुछ एक साथ रखते हैं और निम्नलिखित कोड प्राप्त करते हैं:

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

वर्णित इंजन को लागू करें। इसके काम की जाँच करें।