PHP 8 ile bir kurs arama özelliği oluşturmak, kullanıcıların istedikleri kursları kolayca bulmalarını sağlar. Aşağıda, basit bir kurs arama uygulaması oluşturmanın adımlarını bulabilirsiniz.
1. Veritabanı Tasarımı
Öncelikle, kurslarınızı depolamak için bir veritabanı tablosuna ihtiyacınız olacak. Aşağıda basit bir kurslar tablosu örneği verilmiştir:
CREATE TABLE courses (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. Veritabanı Bağlantısı
PDO kullanarak veritabanınıza bağlantı kurun. Aşağıda basit bir bağlantı örneği verilmiştir:
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
3. Arama Formu Oluşturma
HTML arama formunu oluşturun. Kullanıcılar arama terimlerini buraya girecekler:
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kurs Arama</title>
</head>
<body>
<h1>Kurs Ara</h1>
<form action="search.php" method="GET">
<input type="text" name="query" placeholder="Kurs adı veya açıklaması" required>
<button type="submit">Ara</button>
</form>
</body>
</html>
4. Arama İşlevi
search.php
dosyasında arama işlemini gerçekleştirin:
<?php
if (isset($_GET['query'])) {
$query = $_GET['query'];
// Veritabanı bağlantısı
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
// SQL sorgusu
$stmt = $pdo->prepare('SELECT * FROM courses WHERE title LIKE :query OR description LIKE :query');
$stmt->execute(['query' => '%' . $query . '%']);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($results) {
echo '<h1>Arama Sonuçları</h1>';
echo '<ul>';
foreach ($results as $course) {
echo '<li>';
echo '<h3>' . htmlspecialchars($course['title']) . '</h3>';
echo '<p>' . htmlspecialchars($course['description']) . '</p>';
echo '<small>' . htmlspecialchars($course['created_at']) . '</small>';
echo '</li>';
}
echo '</ul>';
} else {
echo '<h1>Sonuç bulunamadı.</h1>';
}
} else {
echo '<h1>Arama terimi giriniz.</h1>';
}
?>
5. Güvenlik Önlemleri
- SQL Enjeksiyonu Koruması: Kullanıcıdan gelen verileri her zaman sanitize edin. PDO ile hazırlanmş sorgular kullanarak SQL enjeksiyonuna karşı koruma sağlayın.
-
XSS Koruması:
htmlspecialchars
fonksiyonu ile kullanıcıdan gelen verileri güvenli bir şekilde ekrana yazdırın.
6. Ek Özellikler
Kurs arama işlevinizi geliştirmek için aşağıdaki özellikleri ekleyebilirsiniz:
- Filtreleme: Kullanıcıların arama sonuçlarını belirli kriterlere göre filtrelemelerini sağlayabilirsiniz (örneğin, tarih, popülarite).
- Paginasyon: Çok sayıda sonuç olduğunda, sonuçları sayfalara bölerek kullanıcı deneyimini iyileştirin.
- Öneri Sistemi: Kullanıcının aradığı terime göre benzer kursları önerin.
Sonuç
Bu adımları takip ederek PHP 8 ile basit bir kurs arama uygulaması oluşturabilirsiniz. İhtiyaçlarınıza ve projelerinize göre bu yapıyı daha da geliştirebilir ve özelleştirebilirsiniz.