• 04-04-2008, 17:27:23
    #1
    Recursive fonksiyon ile bir kategorilendirme sistemi yaptım ama bazı ufak sorunlar çıktı. Kategorisi üstte olan bir kategoriden ürün çekmeye çalışırken tüm alt kategorilerindeki ürünleri de göstermek istiyorum. Bunun için nasıl bir sql sorgusu kullanmam gerek. Kategori tablosu aşağıdaki gibi. Ürün tablosunda da kategori sütununda kategorinin id'si var.
    id  	ust     ad
    1  	0  	en üst kat1  
    2 	0 	en üst kat1 
    3 	1 	üst kat12 
    4 	1 	üst kat2 
    5 	3 	kat 
    6 	3 	kat2 
    7 	5 	alt kat 
    8 	6 	alt kat2 
    10 	6 	deneme 
    11 	5 	denemed 
    16 	11 	mhgmghm 
    13 	12 	jkhjk
    14 	0 	khjgkhjk 
    18 	17 	mgmghm
    Birde bu kategorileri açılır menude listelerken aşağıdaki gibi görünmesini istiyorum;
    Üst kategori 1
      Alt kategori
        Daha alt kategori
      Alt kategori 2
        Daha alt kategori 2
        Daha alt kategori 3
    Üst kategori 2
    Bunları çözebilecek, çözmem için kaynak gösterebilecek yada sadece mantık söyleyebilecek arkadaşlara şimdiden teşekkürler.
  • 05-04-2008, 16:06:27
    #2
    Buraya kadar gelebildim ama devamını yapamıyorum.
    <?
    function recursive_menu($ust,$host,$kadi,$sifre) {
    require('Connections/bag.php');
    $baglan=mysql_connect($hostname_bag, $username_bag, $password_bag);
    $sql = mysql_query("SELECT * FROM kategori WHERE ust = '$ust'");
    $i="";
    while ($read = mysql_fetch_assoc($sql)) {
    $i=$i.",".$read['id'];
    	recursive_menu($read['id'],$hostname_bag, $username_bag, $password_bag);
        }
    	echo $i;
    }
    require('Connections/bag.php');
    $link = mysql_connect($hostname_bag, $username_bag, $password_bag);
    mysql_select_db($database_bag, $link);
    mysql_query("SET NAMES 'latin5'"); 
    ?> 
    <? recursive_menu($_GET['id'],$hostname_bag, $username_bag, $password_bag); ?>
    Bunu çalıştırdığımda
    Alıntı
    ,16,7,11,8,10,5,6,3,4
    şeklinde çıktılar veriyor. Ben kategorisi bunlar olan tüm ürünleri çekeceğim ;
    Alıntı
    SELECT * FROM urunler Where urunID in ('001','006','008','011','234', .......)
    şöyle bir sql kullanacağım ama bir türlü elde ettiğim çıktıyı bu sorgunun içine sokamadım.

    Not:fonksiyonda include yapmayıp, database değişkenlerini atamazsam çalışmıyor.
  • 17-03-2022, 16:38:04
    #3
    forumxtr adlı üyeden alıntı: mesajı görüntüle
    Buraya kadar gelebildim ama devamını yapamıyorum.
    <?
    function recursive_menu($ust,$host,$kadi,$sifre) {
    require('Connections/bag.php');
    $baglan=mysql_connect($hostname_bag, $username_bag, $password_bag);
    $sql = mysql_query("SELECT * FROM kategori WHERE ust = '$ust'");
    $i="";
    while ($read = mysql_fetch_assoc($sql)) {
    $i=$i.",".$read['id'];
        recursive_menu($read['id'],$hostname_bag, $username_bag, $password_bag);
        }
        echo $i;
    }
    require('Connections/bag.php');
    $link = mysql_connect($hostname_bag, $username_bag, $password_bag);
    mysql_select_db($database_bag, $link);
    mysql_query("SET NAMES 'latin5'");
    ?>
    <? recursive_menu($_GET['id'],$hostname_bag, $username_bag, $password_bag); ?>
    Bunu çalıştırdığımda

    şeklinde çıktılar veriyor. Ben kategorisi bunlar olan tüm ürünleri çekeceğim ;

    şöyle bir sql kullanacağım ama bir türlü elde ettiğim çıktıyı bu sorgunun içine sokamadım.

    Not:fonksiyonda include yapmayıp, database değişkenlerini atamazsam çalışmıyor.
    mesajım dursun