• 08-03-2009, 15:35:14
    #10
    Üyeliği durduruldu
    beyazgolge adlı üyeden alıntı: mesajı görüntüle
    tam olarak hangisi alt kategorinin alt kategorisinimi sınırsız istiyorsun yoksa alt kategori tekmi olacak
    şimdi şöyle mesela ana kategori sınırsız olcak bir alt kategori yine sınırsız olucak alt klategori altı da sınırsız olucak..

    kısaca hepsi burda .com daki sol kategori menusunu canlandır kafanda ona benzicek..
  • 08-03-2009, 15:46:57
    #11
    Üyeliği durduruldu
    Kardeş İki Tablo Olustur.

    Ana Kategori

    ID | ad | alt_ID

    Alt Katerigori

    ID | ad | ust_ID | alt_ID

    şeklinde yap bu şekilde sınırsızca alt alt eklersin
  • 08-03-2009, 15:47:52
    #12
    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.
  • 08-03-2009, 15:48:32
    #13
    Kimlik doğrulama veya yönetimden onay bekliyor.
    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Ç
  • 08-03-2009, 15:50:39
    #14
    Üyeliği durduruldu
    SeffafBilisim adlı üyeden alıntı: mesajı görüntüle
    Kardeş İki Tablo Olustur.
    Ana Kategori
    ID | ad | alt_ID
    Alt Katerigori
    ID | ad | ust_ID | alt_ID
    şeklinde yap bu şekilde sınırsızca alt alt eklersin
    Mükemmel Anlatmıssın
  • 08-03-2009, 16:23:44
    #15
    Üyeliği durduruldu
    akşam bunlar bir denicem.. inş. bir tanesi işime uygun olur..
  • 08-03-2009, 17:50:42
    #17
    Ben de php ye başlayalı 2 ay oldu. Matematik temelli olmadığınızda bu tarz algoritmaları kendi kendinize bulmanız çok zor deha falan olmanız gerekiyor.

    Bu linkte çok iyi bir açıklama buldum.
    KOODLA | BLOG Anasayfa php PHP ile sınırsız alt kategori mantığı

    Rekürsif yani kendini yineleyeyen bir fonksiyon ile tüm kategoriler ve alt kategoriler listelenene kadar çalışan bir fonksiyon ile olay halledilmiş.
    Bir kategorinin kendi id si, adı ve ustkategori id si olması yeterli.
    Tüm aradığım kodlar ve sayfalar içinde en açıklayıcı olanıydı.

    saygılar
  • 08-03-2009, 18:00:16
    #18
    Üyeliği durduruldu
    Bende Kendi Yönetemi Vereyim Tabi Dogru Anlamışsam Konuyu Şimdi Kategori adlı bir tablomuz var birde alt_kat diye bir kategorimiz var şu şekilde yaparsak daha açıklayıcı olur sanırım

    $katdon = mysql_query("select * from kategoriler ");
    while($yaz=mysql_fetch_array($katdon)){
    $id       = $yaz['id'];
    $katadi = $yaz['katadi'];
    
    echo "<a href='kategori.php?id=$id'>$katadi</a>"; //şimdi Tüm Ana Kategorileri Dondurduk
    $row = mysql_fetch_array(mysql_query("select * from alt_kat where ana_kat_adi='$id'"));//Şimdi Burda İse Şuan Dönen Kategorinin Altları Donecek Örnegin 1 numaralı id donuyorsa alt_kat_adi dan 1 olanları çekiyoruz
    $katid       = $row['id'];
    $altkatadi  = $row['alt_kat_adi']; 
    echo "<a href="kategoriler.php?id=$id&altkat=$katid""
    }