PHP 8 Uygulama: Dinamik Kategoriler başlığı altında, dinamik kategoriler oluşturma ve bunları veritabanı ya da statik veri ile gösterme örneğini inceleyeceğiz. Dinamik kategoriler genellikle bir e-ticaret sitesi, blog veya içerik yönetim sistemi gibi uygulamalarda kullanılır. Kategoriler, kullanıcıların belirli türde içerikleri veya ürünleri filtrelemesine olanak tanır.
1. Statik Veri ile Dinamik Kategori Uygulaması
Başlangıç olarak statik veri kullanarak kategorileri gösterebiliriz. Daha sonra bu kategorileri dinamik hale getirmek için bir veritabanı kullanabiliriz.
Örnek: Statik Kategori Dizisi ile Kategori Listeleme
$kategoriler = [
"Teknoloji",
"Sağlık",
"Spor",
"Eğitim",
"Moda"
];
echo "<ul>";
foreach ($kategoriler as $kategori) {
echo "<li>$kategori</li>";
}
echo "</ul>";
- Bu örnekte, kategoriler dizisi kullanılarak
foreach
döngüsü ile her kategori liste olarak yazdırılır. - Çıktı:
- Teknoloji - Sağlık - Spor - Eğitim - Moda
Bu örnek temel bir statik kategori yapısını göstermektedir. Ancak uygulamalarda veriler genellikle bir veritabanından alınır ve kategoriler dinamik olarak oluşturulur.
2. Veritabanı ile Dinamik Kategori Uygulaması
Gerçek dünyada kategoriler genellikle bir veritabanında tutulur. Aşağıda, bir veritabanından kategorilerin nasıl çekileceğini ve dinamik olarak nasıl listeleneceğini göstereceğiz.
Adımlar:
- Kategoriler için bir veritabanı tablosu oluşturun.
- PHP ile veritabanına bağlanın.
- Veritabanından kategorileri çekin ve dinamik olarak listeleyin.
Veritabanı Tablomuzu Oluşturalım (MySQL)
CREATE TABLE kategoriler (
id INT AUTO_INCREMENT PRIMARY KEY,
isim VARCHAR(255) NOT NULL
);
Bu tablo, her kategori için bir id
ve isim
içerecek. id
her kategoriye benzersiz bir kimlik verirken, isim
kategori adını saklayacak.
PHP ile Veritabanına Bağlanma ve Kategorileri Çekme
PHP'de MySQL veritabanına bağlanmak için PDO
veya MySQLi
kullanılabilir. PDO daha esnek olduğu için burada onu kullanacağız.
// Veritabanı bağlantı ayarları
$host = 'localhost';
$dbname = 'veritabani_adi';
$user = 'kullanici_adi';
$pass = 'parola';
try {
// PDO ile veritabanına bağlanma
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Kategorileri çekmek için sorgu
$stmt = $pdo->query("SELECT * FROM kategoriler");
// Kategorileri listele
echo "<ul>";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<li>" . htmlspecialchars($row['isim']) . "</li>";
}
echo "</ul>";
} catch (PDOException $e) {
// Hata mesajı
echo "Bağlantı hatası: " . $e->getMessage();
}
-
PDO: PHP Data Objects (PDO), PHP'de bir veritabanı bağdaştırıcısıdır.
PDO::FETCH_ASSOC
, veritabanından çekilen verileri bir dizi olarak döndürür. -
htmlspecialchars
: XSS saldırılarına karşı çıktıları güvenli hale getirir.
Örnek Çıktı (Veritabanından Gelen Veriler)
- Teknoloji - Sağlık - Spor - Eğitim - Moda
3. Dinamik Kategoriler ile Ürün Listeleme
Kategoriler genellikle ürünler ya da içerikler ile ilişkilendirilir. Bir kategoriye tıklanınca, o kategoriye ait içerikler listelenir. Bunu yapabilmek için ürünler veya içeriklerin de veritabanında kategorilere bağlanması gerekir.
Veritabanı Tablosu: Ürünler
CREATE TABLE urunler (
id INT AUTO_INCREMENT PRIMARY KEY,
isim VARCHAR(255) NOT NULL,
kategori_id INT,
FOREIGN KEY (kategori_id) REFERENCES kategoriler(id)
);
Burada, her ürün bir kategoriye ait olacak ve kategori_id
ile bu ilişkiyi kuracağız.
PHP ile Dinamik Kategoriye Göre Ürün Listeleme
// Kategori id'si
$kategori_id = isset($_GET['kategori_id']) ? (int)$_GET['kategori_id'] : 0;
// Kategori id'sine göre ürünleri çek
$stmt = $pdo->prepare("SELECT * FROM urunler WHERE kategori_id = :kategori_id");
$stmt->execute(['kategori_id' => $kategori_id]);
// Ürünleri listele
echo "<ul>";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<li>" . htmlspecialchars($row['isim']) . "</li>";
}
echo "</ul>";
-
Kategoriye Göre Ürün Getirme: Kullanıcı belirli bir kategori seçtiğinde,
$_GET['kategori_id']
ile o kategoriye ait ürünleri çekeriz. -
Hazırlanmış Sorgular: PDO'nun
prepare()
fonksiyonu, SQL enjeksiyonuna karşı güvenliği artırır.
4. Dinamik Kategoriler ile Ürün Filtresi (Tam Uygulama)
// Kategorileri listele
$stmt = $pdo->query("SELECT * FROM kategoriler");
echo "<ul>";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$kategori_id = $row['id'];
$kategori_adi = htmlspecialchars($row['isim']);
echo "<li><a target="_blank" href='?kategori_id=$kategori_id'>$kategori_adi</a></li>";
}
echo "</ul>";
// Kategori id'si varsa ona göre ürünleri listele
if (isset($_GET['kategori_id'])) {
$kategori_id = (int)$_GET['kategori_id'];
$stmt = $pdo->prepare("SELECT * FROM urunler WHERE kategori_id = :kategori_id");
$stmt->execute(['kategori_id' => $kategori_id]);
echo "<h2>Seçilen Kategorideki Ürünler:</h2>";
echo "<ul>";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<li>" . htmlspecialchars($row['isim']) . "</li>";
}
echo "</ul>";
}
- Kategoriler liste olarak dinamik bir şekilde görüntülenir.
- Her kategoriye tıklandığında, o kategoriye ait ürünler dinamik olarak gösterilir.
Sonuç
PHP 8 ile dinamik kategoriler uygulaması, veritabanı ile etkileşimi kolaylaştıran PDO gibi araçlarla oldukça basit bir şekilde yapılabilir. Bu uygulama, e-ticaret siteleri, bloglar ve içerik yönetim sistemlerinde kullanıcılara dinamik olarak içerikleri sunmanın temelini oluşturur.