PHP ile Sınırsız Alt Kategori Uygulaması
Giriş
E-ticaret veya içerik yönetimi sistemlerinde, ürünler veya içerikler genellikle hiyerarşik bir yapı içinde kategorilere ve alt kategorilere ayrılır. Sınırsız alt kategori desteği, bu hiyerarşinin herhangi bir derinliğe kadar uzanmasına olanak tanır ve kullanıcıların içerikleri kolayca bulup düzenlemelerine yardımcı olur. Bu makale, PHP kullanarak sınırsız alt kategori uygulaması için adım adım bir kılavuz sağlayacaktır.
Veritabanı Şeması
Sınırsız alt kategori uygulaması için aşağıdaki veritabanı şemasını kullanacağız:
sql
CREATE TABLE categories (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
parent_id INT DEFAULT NULL,
PRIMARY KEY (id),
FOREIGN KEY (parent_id) REFERENCES categories(id)
);
Bu şema, her kategori için bir id
, name
ve isteğe bağlı bir parent_id
içerir. parent_id
, kategorinin üst kategorisinin id
‘sine işaret eder.
Model Oluşturma
Veritabanı şemasına karşılık gelen bir PHP modeli oluşturacağız:
“`php
class Category
{
private $id;
private $name;
private $parentId;
// ... getters and setters ...
}
“`
Kategori Ağacı Oluşturma
Kategori ağacını oluşturmak için, tüm kategorileri veritabanından alacağız ve bunları hiyerarşik bir yapıya dönüştüreceğiz:
“`php
function createCategoryTree()
{
$categories = Category::all();
$tree = [];
foreach ($categories as $category) {
$tree[$category->getParentId()][] = $category;
}
return $tree;
}
“`
Bu fonksiyon, parent_id
‘ye göre kategorileri gruplayan çok boyutlu bir dizi döndürür.
Kategori Ağacını Görüntüleme
Kategori ağacını görüntülemek için, rekursif bir fonksiyon kullanacağız:
php
function displayCategoryTree($tree, $level = 0)
{
foreach ($tree as $categoryId => $categories) {
echo str_repeat('-', $level) . $categories[0]->getName() . '<br>';
displayCategoryTree($categories, $level + 1);
}
}
Bu fonksiyon, kategori ağacını hiyerarşik bir şekilde görüntüler ve her kategori için tireler kullanarak girinti ekler.
Yeni Kategori Ekleme
Yeni bir kategori eklemek için, parent_id
‘si verilen kategoriyi veritabanına ekleyeceğiz:
php
function addCategory($name, $parentId)
{
$category = new Category();
$category->setName($name);
$category->setParentId($parentId);
$category->save();
}
Kategori Silme
Bir kategoriyi silmek için, öncelikle alt kategorilerini sileceğiz ve ardından kategoriyi veritabanından sileceğiz:
php
function deleteCategory($id)
{
$category = Category::find($id);
$category->children()->delete();
$category->delete();
}
Faydalı Kaynaklar
Sonuç
Bu makale, PHP kullanarak sınırsız alt kategori uygulaması için kapsamlı bir kılavuz sağlamıştır. Veritabanı şemasından model oluşturmaya, kategori ağacı oluşturmaktan kategori ekleme ve silmeye kadar tüm temel kavramları ele almıştır. Bu kılavuzu takip ederek, web uygulamalarınızda güçlü ve esnek kategori yönetimi sistemleri oluşturabilirsiniz.