Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Kategorileme mantığı hakkında küçük bir soru???

Konu, 'PHP' kısmında sametweb tarafından paylaşıldı.

  1. sametweb

    sametweb Üye

    Kayıt:
    15 Ağustos 2007
    Mesajlar:
    123
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci..
    Şehir:
    esenler / istanbul
    Merhaba arkadaşlar..

    category isminde bir tablom var, id, cat_id, title, comment şeklinde 4 sütun var.

    A Kategori
    B Kategori
    --B alt kategori
    --B alt kategori
    C Kategori
    --C alt kategori


    Veri tabanıma kategorileri ekledikten sonra bu görüntüyü nasıl elde ederiz? İstediğim sınırsız kategorileme değil, sadece 1 ana kategori ve ona ekleyebileceğim birkaç alt kategori.. Yardımcı olursanız sevinirim arkadaşlar.
     
  2. ChaoticThundeR

    ChaoticThundeR Üye

    Kayıt:
    23 Mayıs 2007
    Mesajlar:
    31
    Beğenilen Mesajlar:
    0
    id - cat_id - title - comment
    1, 0, A Kategori, -
    2, 0, B Kategori, -
    3, 2, B Alt Kategori, -
    4, 2, B Alt Kategori2, -
    5, 0, C Kategori, -
    6, 5, C Alt Kategori, -

    databasenin böyle olduğunu var sayalım.
    cat_id sütunu hangi kategorinin alt kategorisi olduğunu belirtiyor. Eğer burası 0 ise kategori Temel kategoridir. if yapısıyla bunu rahatlıkla yapabilirsin.
     
  3. sametweb

    sametweb Üye

    Kayıt:
    15 Ağustos 2007
    Mesajlar:
    123
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci..
    Şehir:
    esenler / istanbul
    Kardeş, bahsettiğin olayı if ile yapıyorum zaten başka bir kısımda. Ama şu anda öyle bir yerdeyim ki, görünümün aynı bu şekilde olması lazım. Her ana kategorinin altına, -eğer varsa- alt kategorisi de görünsün istiyorum. Bir türlü çözemedim..
     
  4. m.erin

    m.erin Aktif Üye

    Kayıt:
    17 Nisan 2005
    Mesajlar:
    472
    Beğenilen Mesajlar:
    0
    Meslek:
    Yazılım Geliştirici
    Şehir:
    KONYA
    Forumda "recursive", "recursive menu", "sınırsız kategori" şeklinde aramalar yaparak istediğin bilgiye ulaşabilirsin. Daha önce bir çok kez aynı konu açıldı :)
     
  5. sametweb

    sametweb Üye

    Kayıt:
    15 Ağustos 2007
    Mesajlar:
    123
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci..
    Şehir:
    esenler / istanbul
    Hocam bahsettiğin sınırsız kategorileme mantığından haberim var. Ama çok karmaşık. Sınırsız değil, bir ana ve bir alt kategori ekleyebileceğim bir sistem işimi görüyor, şu ana kadar da sayfalarımı buna göre yazdım.

    Soruma yardımcı olursanız sevinirim arkadaşlar. :((
     
  6. m.erin

    m.erin Aktif Üye

    Kayıt:
    17 Nisan 2005
    Mesajlar:
    472
    Beğenilen Mesajlar:
    0
    Meslek:
    Yazılım Geliştirici
    Şehir:
    KONYA
    Sadece ana ve alt kategoriler olacaksa @ChaosTurka' nın verdiği cevabın yeterli olması gerekiyor.
     
  7. ChaoticThundeR

    ChaoticThundeR Üye

    Kayıt:
    23 Mayıs 2007
    Mesajlar:
    31
    Beğenilen Mesajlar:
    0
    id - cat_id - title - comment
    1, 0, A Kategori, -
    2, 0, B Kategori, -
    3, 2, B Alt Kategori, -
    4, 2, B Alt Kategori2, -
    5, 0, C Kategori, -
    6, 5, C Alt Kategori, -

    PHP:
    $sql="SELECT * FROM kategoriler";
    $sorgu=mysql_query($sql);
    $satir=mysql_num_rows($sorgu);

    for (
    $i=0$i<=$satir-1$i++)
    {
    $kat_id=mysql_result($sorgu,$i,"id");
    $kat_aid=mysql_result($sorgu,$i,"catid");
    $kat_isim=mysql_result($sorgu,$i,"title");

    if (
    $kat_aid=='0')
    {
    echo 
    "> " $kat_isim "<br>";
    }
    else
    {
    echo 
    "---" $kat_isim "<br>";
    }
    }
    Yukarıdaki databaseye göre bu kodlar senin istediğin çıktıyı verir. Eğer B kategorisene ait sayfa girilirse sorgu ile catid'daki verinin B'nin id'sine eşit olup olmadığını kontrol ettirip B kategorisinin sayfasında B'nin alt kategorilerini yazdırırsın. Misal aşağıdaki kod gibi.

    Kod:
    $sql="SELECT * FROM kategoriler WHERE catid='2'";
    
     
  8. sametweb

    sametweb Üye

    Kayıt:
    15 Ağustos 2007
    Mesajlar:
    123
    Beğenilen Mesajlar:
    0
    Meslek:
    öğrenci..
    Şehir:
    esenler / istanbul
    Dostum verdiğin kodu denedim, sıralamada problem oldu.

    > A Temaları
    > B Temaları
    > C Temaları
    ---B alt temaları
    > D temaları
    > E temaları

    böyle bir yanlışlık oldu. :s
     
  9. Rachel

    Rachel Üye

    Kayıt:
    31 Mayıs 2008
    Mesajlar:
    43
    Beğenilen Mesajlar:
    0
    while($getir = mysql_fetch_array($sql))
    {
    echo $getir['Baslik'];

    echo altKategoriYaz($getir['ID']);
    }

    function altKategoriYaz($katID)
    {
    $sql2 = mysql_query("Select * from kategoriler where SubKategori=".$katID."");
    while($getir2 = mysql_fetch_array($sql2))
    {
    echo $getir2["Baslik"];
    }


    }