Php Sınırsız Kategori ve Alt Kategori Listeleme

Merhaba Arkadaşlar php ile uğraşan herkesin mutlaka bir yerde ihtiyacı olacağını düşündüğüm sınırsız kategori ve alt kategori listeleme kodları illaki lazım olacaktır. Belkide kafanız karıacak nasıl yapsak diye düşüneceksiniz oysaki çok basit bir yapı ile bir fonksiyon ile bu işlemi gerçekleştirelim.

İşte sınırsız php kategori ve altkategori listeleme için kullanacağımız fonksiyon kodları

function kategoriListe($id)
    {
        global $con;
        
        echo "<ul>";
        
        $kod="SELECT
              K.id, K.kategoriAdi,
              (SELECT COUNT(A.id) FROM kategoriler AS A WHERE A.pid=K.id ) as altKategoriSayisi
              FROM kategoriler AS K
              WHERE K.pid={$id}";
        $sql=mysqli_query($con,$kod);
        while($veri=mysqli_fetch_assoc($sql))
        {
            echo "<li>".$veri["kategoriAdi"];
            
            if($veri["altKategoriSayisi"]>0)
                kategoriListe($veri["id"]);
            
            echo "</li>";

        }
        
        echo "</ul>";
    }

Sql kodlarımız 3 tablodan oluşacak id, pid, kategoriAdi olmak üzere

id - int (auto_increment, key)
pid - int 
kategoriAdi - varchar(50)

SQL dosyasını çalıştırdığınız zaman aşağıdaki tabloda kayıtların verilerin yer aldığı tablomuz oluşacaktır. 

idpidkatagoriAdi
10Bilgisayar
21Dizüstü Bilgisayarlar
31Masaüstü Bilgisayarlar
41Oyun Bilgisayarları
52Casper Notebook
62Asus Notebook
74Monster Notebook
84MSI Notebook
90Yazıcılar
109Lazer Yazıcılar
119Mürekkep Püskürtmeli Yazıcılar
129Tanklı Yazıcılar
1310HP Yazıcılar
1410Canon Yazıcılar
1513HP M Serisi
1613Canon AirPrint Serisi

Bu tabloda yer alan pid değeri yani parent id değeri, o kategorinin bağlı bulunduğu üst kategorinin id değerini belirtiyor. Ana kategorilerin pid değeri ise 0 olarak belirlenmiş durumda. 

kategori ekletirken kategori adı , ve altına var olan kategorileri listeleyin. seçilen kategori eklediğinizin üst kategorisi olacağı için sınırsız kategori sablonu oluşturabiliyoruz alt kategori seçilmez. ise ana kategori için. pid yi 0 olarak göndermeniz yeterlidir.