PHP'de Veritabanı Tabanlı Motor
Şimdi sayfa içeriğinin dosyalarda değil, veritabanında saklanacağı bir site motoru yapalım. Veritabanımızda şu şekilde bir tablo olduğunu varsayalım:
| id | title | content |
|---|---|---|
| 1 | title1 | <div> content1 </div> |
| 2 | title2 | <div> content2 </div> |
| 3 | title3 | <div> content3 </div> |
Diyelim ki sayfalarımıza /page/1 gibi
URL'lerden ulaşmak istiyoruz, buradaki sayı
almak istediğimiz sayfanın id'sini
temsil edecek.
Uygulamaya başlayalım. İlk olarak ayrı bir dosyada veritabanı bağlantısını yapalım ve bu dosyayı kendi dosyamıza bağlayalım:
<?php
$link = require 'connect.php';
?>
İstenen URL'yi alalım:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Düzenli ifade kullanarak URL'yi parçalara ayıralım:
<?php
preg_match('#/page/(\d+)#', $url, $match);
?>
Yakalama grubundaki id'yi bir değişkene
yazalım:
<?php
$id = $match[1];
?>
Veritabanına sorgu yapalım, id'ye göre
istenen sayfayı alalım:
<?php
$query = "SELECT * FROM pages WHERE id=$id";
$res = mysqli_query($link, $query) or die(mysqli_error($link));
$page = mysqli_fetch_assoc($res);
?>
Şablon dosyasını alalım:
<?php
$layout = file_get_contents('layout.php');
?>
Şablon dosyasında başlık ve içerik yerleştirmesini yapalım:
<?php
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
?>
Oluşturulan site sayfasını tarayıcıya gönderelim:
<?php
echo $layout;
?>
Hepsini bir araya getirelim ve aşağıdaki kodu elde edelim:
<?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;
?>
Açıklanan motoru uygulayın. Çalışmasını test edin.