PHP 8'de bir arama formu, kullanıcının belirli bir kriter girerek veri araması yapmasını ve PHP'nin bu arama kriterlerine göre sonuçları işlemesini sağlar. Arama formu, genellikle GET yöntemiyle yapılır, çünkü arama sonuçları URL'de görünür ve paylaşılabilir olur. Aşağıda, bir arama formunun nasıl yapılacağına dair adım adım bir örnek verilmiştir.
1. HTML Arama Formu Oluşturma
İlk adım, HTML'de bir arama formu oluşturmaktır. Bu form, kullanıcının arama yapabilmesi için bir metin alanı içerir. Arama formunun verilerini GET yöntemiyle PHP dosyasına göndereceğiz.
HTML Formu:
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Kitap Arama Formu</title>
</head>
<body>
<h1>Kitap Arama</h1>
<form action="search.php" method="get">
<label for="search">Aranacak Kitap:</label>
<input type="text" id="search" name="search" placeholder="Kitap adı girin" required>
<br>
<br>
<input type="submit" value="Ara">
</form>
</body>
</html>
Bu formda kullanıcıdan kitap adı isteniyor. Kullanıcı formu doldurup "Ara" butonuna bastığında form verisi, search.php
dosyasına GET yöntemi ile gönderilir.
2. PHP ile Arama İşlemini Yapma
Formdan gelen verileri işlemek için search.php
dosyasında veriyi alacağız ve basit bir arama işlemi gerçekleştireceğiz. Burada basit bir örnekle, önceden tanımlanmış bir kitap listesinde arama yapacağız.
search.php:
<?php
if (isset($_GET['search'])) {
$searchTerm = htmlspecialchars(trim($_GET['search'])); // Kullanıcıdan gelen arama terimi
// Örnek kitap listesi (Veritabanına bağlanmadık, ancak veritabanı ile de çalışabilir)
$books = [
"PHP ile Web Geliştirme",
"PHP 8 Yenilikleri",
"Laravel ile Uygulama Geliştirme",
"Modern JavaScript",
"Python Programlama",
"Veri Bilimi ile Python",
"HTML ve CSS Eğitimi"
];
// Arama sonuçlarını tutacak dizi
$results = [];
// Kitap listesinde arama terimine göre arama yap
foreach ($books as $book) {
if (stripos($book, $searchTerm) !== false) {
$results[] = $book; // Eşleşen kitapları sonuçlara ekle
}
}
// Sonuçları göster
echo "<h2>Arama Sonuçları:</h2>";
if (count($results) > 0) {
echo "<ul>";
foreach ($results as $result) {
echo "<li>" . $result . "</li>";
}
echo "</ul>";
} else {
echo "Sonuç bulunamadı.";
}
}
?>
3. Kod Açıklaması
-
GET Yöntemi ile Veriyi Alma:
isset($_GET['search'])
ile kullanıcının arama formuna bir veri girip girmediğini kontrol ediyoruz.htmlspecialchars()
vetrim()
fonksiyonlarıyla kullanıcının girdiği veriyi işleyip güvenli hale getiriyoruz. -
Örnek Kitap Listesi:
$books
dizisi, sabit bir kitap listesi içeriyor. Gerçek bir uygulamada, bu liste bir veritabanından çekilebilir. -
Arama İşlemi:
stripos()
fonksiyonu ile arama terimi ve her bir kitap ismi karşılaştırılıyor. Bu fonksiyon büyük/küçük harf duyarlılığı olmadan arama yapar. Arama terimi bulunan kitaplar$results
dizisine eklenir. -
Sonuçların Gösterilmesi: Eğer sonuç bulunduysa, bunlar bir liste olarak gösterilir. Eğer hiçbir sonuç bulunmazsa, "Sonuç bulunamadı" mesajı gösterilir.
4. Sonuçlar
Eğer kullanıcı PHP
terimi ile bir arama yaparsa, sonuç sayfasında şu gibi sonuçlar gösterilecektir:
Örnek URL:
http://example.com/search.php?search=PHP
Sonuç:
Arama Sonuçları: - PHP ile Web Geliştirme - PHP 8 Yenilikleri
Eğer hiçbir sonuç bulunmazsa, sonuç şu şekilde olacaktır:
Sonuç bulunamadı.
5. Veritabanı ile Çalışma
Eğer arama işlemini bir veritabanı ile yapmak istiyorsanız, PDO veya MySQLi gibi veritabanı kütüphanelerini kullanabilirsiniz. Aşağıda basit bir MySQL arama sorgusu örneği verilmiştir:
<?php
if (isset($_GET['search'])) {
$searchTerm = htmlspecialchars(trim($_GET['search']));
// Veritabanı bağlantısı (PDO kullanarak)
$dsn = 'mysql:host=localhost;dbname=library';
$username = 'root';
$password = '';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// SQL sorgusu
$stmt = $pdo->prepare("SELECT * FROM books WHERE title LIKE ?");
$stmt->execute(["%" . $searchTerm . "%"]);
// Sonuçları alma
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<h2>Arama Sonuçları:</h2>";
if ($results) {
echo "<ul>";
foreach ($results as $book) {
echo "<li>" . htmlspecialchars($book['title']) . "</li>";
}
echo "</ul>";
} else {
echo "Sonuç bulunamadı.";
}
} catch (PDOException $e) {
echo "Veritabanı hatası: " . $e->getMessage();
}
}
?>
Bu örnek, veritabanında kitapları aramak için PDO kullanır. Kullanıcı tarafından girilen arama terimi, SQL sorgusundaki LIKE
ifadesi ile eşleştirilir.
6. Sonuç
PHP 8'de arama formu ile kullanıcıların girdiklerine göre dinamik sonuçlar gösterebilirsiniz. Bu örnek, basit bir kitap arama uygulaması için temel bir yaklaşımı göstermektedir. Daha gelişmiş projelerde, arama sonuçlarını sayfalama, detay sayfalarına yönlendirme veya AJAX gibi tekniklerle daha dinamik hale getirebilirsiniz.