veritabanında aşagıdaki kategoriler tablosunu kullanabilirsin. alt kategoriler diye tablo acmana gerek yok.

CREATE TABLE `kategori` (
  `id` int(11) NOT NULL auto_increment,
  `kategoriadi` varchar(255) NOT NULL,
  `pozisyon` int(11) NOT NULL default '1',
  `anakatid` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

id - kategori id
kategoriadi - kategori adı
pozisyon - kategori pozisyonu
anakatid - üst kategori id varsayılan 0


burada en önemli nokta anakatid kısmıdır.

verileri cekerken anakatid ye göre cekersek o kategorinin alt kategorilerini listeleriz.

anakatid 0 olanlar ana kategoridir.

kategori kaydetme sırasında anakategori seçmessek anakatid 0 olarak geçicektir. anakategori secersek anakatid ye tablodaki kategorinin id sini atayacaktır.

kategoriye kaydedecegin alt veriler için ayrı tablo olusturman lazım.