Cevaplar
-
Anladığım kadarıyla
Anakategori
Altkategoriler
Anakategori
Altkategoriler
.
.
şeklinde sıralamak istiyorsunuz.
Öncelikle mysql kısmını geçiyorum.
Yapmanız gereken
anakategori.adı ona bağlı olan alt kategori şeklinde bir sorgu ile bu şekil bir sorgunuz olur
Mesela
Araba Mercedes
Araba Bmw
Bilgisayar Acer
Bilgisayar Toshiba
Siz bunları yazdırırken
anakategori kısmını kontrol ettirmelisiniz
Eğer önceki yazılan anakategori ile şuanki aynı ise sadece altkategori sütnunu yazdır.Ve sadece 1 kere anakategori yazdırılacak.
Bunuda son yazılan anakategoriyi değişkene alarak denetliyebilirsiniz.
İf değişken anakategoriye eşit ise sadece altkategori yazdır şeklinde.
Umarım yardımcı olur kolay gelsin -
Merhaba aşağıdaki şekilde kategoriler listelenebiliyor. hatta alt kategori kademesi (depth) 2 den fazla olsa bile listelemeyi yapılabiliyor.
gruplama yapıldığı için ürün isimlerinin hepsini bu listeye dahil edemezsiniz (veya ben bilmiyorum) ürün listesi için baska bir recordset daha oluşturarak döngü içerisinde her alt kategorinin ürünleri sorgulatabilirsiniz. bana en pratik yöntem bu gibi geliyor.
right join ile kategori tablosu ve urun tablosu birleştirilmiş olsa belki tek sorguyla çözülebilir. fakat koddaki kontrol noktalarının çoğalması hata payını arttıracaktır. bence buna hiç gerek yok.
<?php $sorgu = mysql_query(" SELECT parent.kategori_id, parent.kategori_ad, parent.left, parent.right, parent.depth, urun.urun_id, urun.urun_kategori_id, urun.urun_ad, COUNT(urun.urun_ad) AS urun_toplam FROM tblkategori AS node, tblkategori AS parent, tblurun AS urun WHERE node.left BETWEEN parent.left AND parent.right AND node.kategori_id = urun.urun_kategori_id GROUP BY parent.kategori_ad ORDER BY parent.kategori_id; "); echo "<ul>\n"; $d1 = 1; while ($row = mysql_fetch_array($sorgu)) { $kategori_id = $row["kategori_id"]; $kategori_ad = $row["kategori_ad"]; $left = $row["left"]; $right = $row["right"]; $depth = $row["depth"]; $urun_id = $row["urun_id"]; $urun_kategori_id = $row["urun_kategori_id"]; $urun_ad = $row["urun_ad"]; $urun_toplam = $row["urun_toplam"]; $d2=$depth; if ($d2 != 0) { if ($d1==$d2) { //echo " <li><a href='id=$kategori_id' title='left degeri : $left - right degeri : $right - depth degeri : $depth'>$kategori_ad</a> [$urun_toplam adet ürün var]</li>\n"; echo " <li><a href='id=$kategori_id' title='left degeri : $left - right degeri : $right - depth degeri : $depth'>$kategori_ad</a>\n"; } else { if ($d1<=$d2) { echo "<ul>\n"; //echo "<li><a href='id=$kategori_id' title='left degeri : $left - right degeri : $right - depth degeri : $depth'>$kategori_ad</a> [$urun_toplam adet ürün var]</li>\n"; echo "<li><a href='id=$kategori_id' title='left degeri : $left - right degeri : $right - depth degeri : $depth'>$kategori_ad</a>\n"; } else { echo "</ul>\n"; //echo "<li><a href='id=$kategori_id' title='left degeri : $left - right degeri : $right - depth degeri : $depth'>$kategori_ad</a> [$urun_toplam adet ürün var]</li>\n"; echo "<li><a href='id=$kategori_id' title='left degeri : $left - right degeri : $right - depth degeri : $depth'>$kategori_ad</a>\n"; } $d1 = $d2; } } } echo "</ul>\n"; ?>