Μηχανή βάσης δεδομένων σε PHP
Ας δημιουργήσουμε τώρα μια μηχανή ιστότοπου, στην οποία το περιεχόμενο των σελίδων δεν θα αποθηκεύεται σε αρχεία, αλλά σε μια βάση δεδομένων. Ας υποθέσουμε ότι έχουμε τον ακόλουθο πίνακα στη βάση δεδομένων:
| id | title | content |
|---|---|---|
| 1 | title1 | <div> content1 </div> |
| 2 | title2 | <div> content2 </div> |
| 3 | title3 | <div> content3 </div> |
Ας υποθέσουμε ότι θέλουμε να λαμβάνουμε τις σελίδες μας μέσω
URLs της μορφής /page/1, όπου ο αριθμός θα
αντιπροσωπεύει το id της σελίδας
που θέλουμε να λάβουμε.
Ας ξεκινήσουμε την υλοποίηση. Αρχικά, σε ένα ξεχωριστό αρχείο θα δημιουργήσουμε μια σύνδεση με τη βάση δεδομένων και θα συμπεριλάβουμε αυτό το αρχείο στο δικό μας:
<?php
$link = require 'connect.php';
?>
Ας λάβουμε το URL που ζητήθηκε:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Χρησιμοποιώντας μια κανονική έκφραση, θα χωρίσουμε το URL σε μέρη:
<?php
preg_match('#/page/(\d+)#', $url, $match);
?>
Ας αποθηκεύσουμε το id από την "τσέπη" σε μια μεταβλητή:
<?php
$id = $match[1];
?>
Ας εκτελέσουμε ένα ερώτημα στη βάση δεδομένων, λαμβάνοντας
τη ζητούμενη σελίδα βάσει id:
<?php
$query = "SELECT * FROM pages WHERE id=$id";
$res = mysqli_query($link, $query) or die(mysqli_error($link));
$page = mysqli_fetch_assoc($res);
?>
Ας λάβουμε το αρχείο του προτύπου:
<?php
$layout = file_get_contents('layout.php');
?>
Στο αρχείο του προτύπου, θα πραγματοποιήσουμε την εισαγωγή του τίτλου και του περιεχομένου:
<?php
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
?>
Ας στείλουμε τη συναρμολογημένη σελίδα του ιστότοπου στο πρόγραμμα περιήγησης:
<?php
echo $layout;
?>
Ας τα βάλουμε όλα μαζί και θα λάβουμε τον ακόλουθο κώδικα:
<?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;
?>
Υλοποιήστε την περιγραφόμενη μηχανή. Ελέγξτε τη λειτουργία της.