Injini ya Tovuti kwa kutumia Database katika PHP
Sasa hebu tutengeneze injini ya tovuti ambayo yaliyomo katika kurasa hazitahifadhiwa kwenye faili, bali kwenye database. Hebu tuseme kwenye database yetu kuna jedwali kama hii:
| id | title | content |
|---|---|---|
| 1 | title1 | <div> content1 </div> |
| 2 | title2 | <div> content2 </div> |
| 3 | title3 | <div> content3 </div> |
Tuseme tunataka kupata kurasa zetu kwa
anuwai ya URL kama /page/1, ambapo nambari itakuwa
inawakilisha id ya kurasa ile
ambayo tunataka kupata.
Wacha tuanze utekelezaji. Kwanza, kwenye faili tofauti tutafanya muunganisho na database na kuiunganisha faili hiyo kwa yetu:
<?php
$link = require 'connect.php';
?>
Tutapata URL iliyoombwa:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Kwa kutumia usemi wa kawaida tutagawanya URL katika sehemu:
<?php
preg_match('#/page/(\d+)#', $url, $match);
?>
Tutaandika id kutoka kwenye mfuko kwenye kutofautisha:
<?php
$id = $match[1];
?>
Tutafanya ombi kwa database, kwa id
kupata kurasa iliyoombwa:
<?php
$query = "SELECT * FROM pages WHERE id=$id";
$res = mysqli_query($link, $query) or die(mysqli_error($link));
$page = mysqli_fetch_assoc($res);
?>
Tutapata faili ya kiolezo:
<?php
$layout = file_get_contents('layout.php');
?>
Kwenye faili ya kiolezo tutafanya uingizwaji wa kichwa na yaliyomo:
<?php
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
?>
Tutatuma kurasa iliyokusanywa ya tovuti kwenye kivinjari:
<?php
echo $layout;
?>
Tutakusanya yote pamoja na kupata msimbo ufuatao:
<?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;
?>
Tekeleza injini iliyoelezewa. Jaribu utendaji wake.