arkadaşlar localde deneme yaparken loop döngüsünde sorun olduğunu farkettim, $i=0; yerine $i=$i-1; yazmam gerekiyormuş. şu an fonksiyon sorunsuz çalışmaktadır. yeni hali :

<?

function kategorial($id,$s)
{
        
        $al=mysql_query("select * from taxonomy where parent_id='$id' order by id asc");
        while($ver=mysql_fetch_array($al))
        {
        
        if($s=='0'){$kaydir2="-"; $css="class='alt'";}
        else{    for($a=0;$a<2*$s;$a++){$kaydir.="&nbsp;";}$kaydir2="$kaydir »";}
        
        echo "<option $css value='".$ver["id"]."'>$kaydir2".$ver["name"]."</option>";
        
         unset($kaydir);
        
        $altkategorivarmi=mysql_num_rows(mysql_query("select id from taxonomy where parent_id='".$ver["id"]."'"));
        if($altkategorivarmi>0){global $i; $i++; kategorial("".$ver["id"]."","$i"); $i=$i-1;}
  
    }
}


?>
kullanım şekli ise :

<? echo kategorial('0','0'); ?>
örneğin anakategorilerin tamamı değilde spesifik bi anakategori ve alt kategorilerini ekrana bastırmak istiyorsanız : (örneğin akademik birimler ve alt kategorilerini bastırmak istiyorum, ve akademik birimlerin id si 1)

<? echo kategorial('1','0'); ?>
ve karşımıza çıkan select box:



Bir adım daha ileri gidip admin panelimize kategorilerimizi mantıksal olarak bastıralım :

<table bgcolor=white width=800>
<tr bgcolor="#008080"><td width=%90><center><font color=white><b>Kategori Adı</td><td><center><font color=white><b>Düzenle</td><td><center><font color=white><b>Sil</td></tr>


<?

function kategoribas($id,$s)
{
        
        $al=mysql_query("select * from taxonomy where parent_id='$id' order by id asc");
        
        while($ver=mysql_fetch_array($al))
        {
        
        if($s=='0'){$kaydir2="-"; $css="<b>";}
        else{    for($a=0;$a<2*$s;$a++){$kaydir.="&nbsp;";}$kaydir2="$kaydir »";}
        
        echo "<tr><td>$css $kaydir2".stripslashes($ver["name"])."</td><td><center><a style='text-decoration:none' href='kategoriduzenle2.php?id=".$ver["id"]."'>[D]</a></td><td><a style='text-decoration:none' href='kategorisil.php?id=".$ver["id"]."'><font color=red>[x]</a></td></tr>";
        
         unset($kaydir);
        
        $altkategorivarmi=mysql_num_rows(mysql_query("select id from taxonomy where parent_id='".$ver["id"]."'"));
        if($altkategorivarmi>0){global $i; $i++; kategoribas("".$ver["id"]."","$i"); $i=$i-1;}
  
    }
}



echo kategoribas(0,0);
?>

</table>
ekran görüntüsü :



ilk postumda belirttiğim kategori mantığı gerçekten mükemmel işe yarıyor. bu sayede sınırsız alt ve üst kategori oluşturmanızın yanı sıra, örneğin bi alt kategoriyi başka bi ana kategoriye taşıdığınız zaman, o alt kategori ve onun altında ki tüm kategoriler otomatikman yeni ana kategoriye taşınmaktadır.

örneğin yukarda ki resimde Kampüs Hayatı kategorisinin normalde ana kategorisi Eğitim kategorisiymiş. ben bu Kampüs Hayatı kategorisini Araştırma ana kategorisine import ettiğim zaman, Kampüs Hayatı ve alt kategorileri olan Kampüs Tur, Fotoğraflar, Güney Kampüs, Yerleşim Planı, spor ve yurtlar vs. kategorileri de otomatikman Araştırma kategorisinin yeni alt kategorisi olan Kampüs hayatı alt kategorisinin alt kategorileri olacaktır.

herkese kolay gelsin şimdilik bu kadar