PHP ile Sınırsız Kategori ve Alt Kategori

Bugün sizlere Php ile sınırsız kategori sistemini nasıl yapabiliriz bunu anlatacağız. Bir diğer adı ile sınırsız ebeveyn kategori sistemini nasıl yapabileceğinizi anlatacağım. İnternet ortamında bununla ilgili gereksiz uzunlukta, kafanızı karıştırabilecek makaleler bulunmakta.

Sizler için en basit mantığı ile kolaylıkla kullanım sağlayabileceğiniz şekilde anlatım yapacağız. Gelin konumuza başlayalım.

Sonsuz Kategori ve Alt Kategori Mantığı

Bu mantıkta öncelikli olarak Ana kategorilerimiz bulunuyor yani buna halk dilinde “baba” diyoruz. Bu ana kategorilerimizin birbirine bağlı ebeveynleri oluyor. Bu hiyerarşi ile sonsuz bir şekilde kategori, alt kategori mantığı oluşuyor.

Şimdi bir veri tabanı tablo yapısı oluşturalım ve bunun üzerinden gidelim. Tablomuzun ismi “kategoriler” olsun.

tablo: kategoriler
kategori_idkategori_adikategori_parent_id
1Bilgisayar0
2Telefon0
3Elektronik0
4Casper1
5Lonovo1
6Hp1
7Samsung2
8Nokia2
9Amd Ryzen 74
10intel 17 7700 K5

Kategoriler tablosunda kategori_id, kategori_adi, kategori_parent_id isimli 3 ayrı sütun oluşturduk ve ben birkaç veri girişi yaptım. kategori_parent_id “0” olanlar ana kategori, diğerleri ise ebeveyn olarak veriler ile ilişkilidir. Şimdi bununla ilgili bir Recursive fonksiyon (kendi kendini çağıran fonksiyon) yazalım ve bunu kolaylıkla kullanımını yapabilmenizi sağlayalım.

<?php
function kategori_listele($parent_id = 0){

  echo '<ul>';

  //Kategorileri veritabanından çekiyoruz
  $kategori_cek = $db -> query(" select * from kategoriler where kategori_parent_id = $parent_id ");

   if($kategori_cek -> rowcount()){
      foreach($kategori_cek as $kategori_sonuc){
          
           echo '<li>'.$kategori_sonuc['kategori_adi'].'</li>';

           kategori_listele($kategori_sonuc['kategori_id']);
      }
   }

  echo '</ul>';

} //fonksiyon tamamlandı

Fonksiyonumuz bu kadar basit. Çalıştırmak için ise;

<?php
kategori_listele(0);

Ekran görüntüsü ise şu şekilde olmaktadır.

Bu şekilde sınırsız kategori listelemesi yapmış bulunduk. Bu fonksiyon üzerinden devam edebilirsiniz.

Translate »