• 02-11-2009, 22:21:12
    #1
    Üyeliği durduruldu
    function getcategory() {
        $category = mysql_query("SELECT * FROM categories");
            while($query = mysql_fetch_array($category)) {
            $catid = $query['catid'];
            $cattitle = $query['cattitle'];        
                echo '<option value="'.$catid.'">'.$cattitle.'</option>'; } }
    şeklinde bir listbox'um mevcut. Kategorileri listelediğim zaman normal listboxta nasıl görünüyorsa öyle gözüküyor. Ben alt kategorilere göre dallanıp budaklanması için ne yapmalıyım.

    Veritabanı yapısı;
    - catid: Kategori id leri
    - cattitle: Kategori başlıkları
    - catparent: Üst kategori id leri (Eğer ana kategori ise 0 yazar)
    
    şeklinde.
    Mümkünse yukarıdaki kod üzerinden gösterirseniz çok sevinirim.

    ÖRNEK:

    -Alışveriş
    ---Alışveriş Siteleri
    -Bilgisayar
    ---Bilgisayar parçaları

    ...
  • 03-11-2009, 08:48:10
    #2
    Üyeliği durduruldu
    bu sorunun cevabi rekürsif yani özyenilemeli yani kendi kendini çağıran bir fonksiyon oluşturmalisiniz.

    while in içinde tekrar sql olup eğer ki alt kategori varsa fonksiyon tekrar kendini çağırmalı
  • 03-11-2009, 15:18:41
    #3
    function form_kat_alt($ustkid,$level,$tur){
    if(!$ustkid){$ustkid = 0;}
    
    $sorgu = mysql_query("select * from kategori  where ustkid = '".$ustkid."' AND kturu = '".$tur."' order by ksira");
    while($yaz = mysql_fetch_array($sorgu)){
    
    echo '<option value="'.$yaz['kid'].'">'.str_repeat('-',$level).''.$yaz['kbaslik'].'</option>';
    $sorgu2 = mysql_query("select * from kategori  where ustkid = '".$yaz['kid']."' AND kturu = '".$tur."' order by ksira");
    $toplam = mysql_num_rows($sorgu2);
    
    if($toplam){
    form_kat_alt($yaz['kid'],$level+5,$yaz['kturu']);
    }//if
    }//while
    }//fonksiyon
    gibi alt kategorilere herseferinde 5 fazla - koyarak sıralamada ileri olmasını sağlıyorum

    kullanım:
    form_kat_alt(0,0,'resim'); //resim kategorisini dallandırıp budaklandırıyor
  • 03-11-2009, 16:05:28
    #4
    Üyeliği durduruldu
    Teşekkür ederim cevaplar için inceliyorum