İlk mesajımda belirttiğim gibi bir yapı kurabilirsiniz. Biraz daha açıklayıcı olmak gerekir ise;
Kategorilerin hepsinin bir üst kategorisi olabileceğini düşünerek işlem yapacağız. Her kategorinin bir üst kategorisini bilmek en baştaki kategoriyi bulana kadar bize yardımcı olacaktır. Çünkü 5 nolu kategori 4 ün alt kategorisi ise 4 de 3 ün ise.. gibi. Bunu bulana kadar bahsettiğiniz gibi "rekürsif" fonksiyon kullanabiliriz. (yavaş olduğu doğrudur.)
Sizin verdiğiniz örneği tabloya çevirirsek
bilgisayar(1), Müzik(2), Oyuncak(3) Ana Kategori (0)
Donanım(4), Yazılım(5) =>
bilgisayarın Alt Kategorileri (1)
Dizüstü(6) =>
bilgisayar/Donanımın Alt Kategorisi (4)
Dizüstü 4 numaralı kategoriye ait (Donanım), Donanım ise 1 numaralı kategoriye ait (
bilgisayar)
bilgisayar ise ana kategori (0'a ait)
Örneğin bir fonksiyon düşünün; verilen kategori numarasındaki kayıtı bulup "ana_id" değeri 0 olana kadar kendi kendini çalıştırsın.
Kod:
def kategori_yaz(kat)
# kayıtı bul
# kaydın "ana_id" değeri 0 dan farklı ise
# bu fonksiyonu değer olarak "ana_id" şeklinde yeniden çalıştır
# kategori_yaz(ana_id) gibi.
end
bu fonksiyon size ana kategoriye kadar sırasıyla kategorinin bağlı olduğu tüm kategorileri ekrana yazar.
gibi.