CREATE TABLE IF NOT EXISTS `kategoriler` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`k_adi` varchar(255) DEFAULT NULL,
`altk_id` int(11) DEFAULT NULL,
`icerik` text,
PRIMARY KEY (`id`),
KEY `altk_id` (`altk_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1 ;
Mesela bu şekilde bir tablo oluşturursun, Ana Kategorilerin altk_id sini 0 yaparsın, ve ana kategorileri altk_id si 0 olanlar diye sıralattırırsın, bu sıralatmayı yaparkende bir fonksiyon oluşturup her sıraladığı ana kategori altında fonksiyon ile alt kategorisi var mı diye bakalım, bunuda şu şekilde yapacağız ana kategoriyi sıralattık ve o ana kategorinin id sini alıp bu sefer altk_id si sıralamış olduğumuz ana kategorinin id si ile aynı olan kategorileri çekeceğiz.
Örnekle şunu yazalım.
En başta iki ana kategori ekliyoruz, birisi NOK diğeri ise Production kategorisi olsun. NOK kategorisinin id si 1, Production kategorisinin id si 2. Bunlar ana kategori olduğu için altk_id leri 0 ikisininde. Peşine NOK kategorisine Oğuzhan kategorisini alt kategori olarak ekleyelim. Bu durumda Oğuzhan kategorisinin id sini 3 ama altk_id si 1 yapıyoruz, çünkü NOK kategorisinin bir alt kategorisi olduğunuzdan NOK kategorisinin sahip olduğu id numarasını Oğuzhan kategorisinin altk_id si olarak ekliyoruz. Peşine Kurnuç kategorisini Oğuzhan kategorisine alt kategori ekleyelim, bunun içinde Kurnuç kategorisinin id si 4 ve altk_id si 3 olur, çünkü Oğuzhan kategorisinin alt kategorisi.
Yani bu altk_id bize şunu anlatıyor, eklediğimiz kategori hangi kategorinin alt kategorisidir.
Örneği biraz şekile dönüştürelim.
id |
altk_id |
k_adi
1 | 0 | NOK
-3 | 1 | Oğuzhan
--4 | 3 | Kurnuç
2 | 0 | Production
Yukarıdaki id bölümünün önündeki - ler alt kategori olduklarını belirtmek için kullanılmıştır.
icerik bölümüne ise eklediğiniz kategori için bir yazı felan ekleyecekseniz onları girebilirsiniz.
Başlı başına bir makale oldu bari adımızı yazalım
Nuri Oğuzhan KURNUÇ