Merhabalar arkadaşlar ben php ile sınırsız kategorilendirme işlami yapıyorum ve bu kategorilere ürünleri ekletebiliyorum ancak bi yerde takıldım.. örneğin 4 aşamalı bir kategori var;
ürünler -> Bilgisayar ->Donanım ->Ekran Kartı
bu şekilde birbirine bağlı bir kategori sistemi var ben ekran kartı kategorisine ürün eklediğim zaman bu ürün donanım kategorisi sayfasında bilgisayar kategorisi sayfasında ve ürünler sayfasında gözüksün ancak ürünü sayfaya çağırırken kategori id sine göre çağırdığım için sadece ekran kartı sayfasında gözüküyor diğer üst kategorilerin sayfasın gözükmüyor...
bunu nasıl yapabilirim bir yol gösterirseniz sevinirim...
Kategorideki Ürünleri Sayfaya Çağırma
7
●793
- 10-01-2010, 01:06:19Üyeliği durdurulduher urune takip ettigi kategorilerin id sini birleştirip implode ile yerleştirebilirsiniz
ürünler -> Bilgisayar ->Donanım ->Ekran Kartı dan bahsedersek id leri şöyle olsun
Bilgisayar = 3;
Donanım = 4;
Ekran Kartı = 5;
gibi olsun
burda kategoriyol gibi bir alan daha ekleyip içine implode ile
3|4|5
gibi kaydedersenizde bir çözüm olabilir. ama çok basit anlamda bir çözüm üretmek zor diye düşünüyorum - 10-01-2010, 01:41:00tabloda şu şeklide yapıyorum
id | kat_adi | kat_id
1 | Ürünler | 0
2 | Bilgisayar | 1
3 | Donanım | 2
4 | Ekran Kartı | 3
ürünleri de kat_id ye göre çağırdığım için diğerlerinde gözükmüyor doğal olarak...
yani alt kategoriler bir üst kategorisinin id sini alıyor kat_id olarak
ve ayriyetten kategoriler sadece bu şekilde değil bilgisayarın bir sürü alt kategorisi var ve onlarında alt kategorileri o yüzden zorlanıyorum...
yapmak istediği e-tic. sitelerinde yaptıkları oralarda bu işlemleri nasıl yapıyorlar...veya bu işlemi daha kolay yapmak için farklı bir kategorilendirme işlemi yapabilirmiyiz... - 10-01-2010, 02:37:03for Döngüsü kurmanız lazım.
Örnekle açıklayım:
Veritabanınız:
id | kat_adi | kat_id 1 | Ürünler | 0 2 | Bilgisayar | 1 3 | Donanım | 2 4 | Ekran Kartı | 3
Kod örneği (veri çekme vs... es geçiyorum):
/* SQL Bağlantı */ $urunkat = /* Ürünün kategorisini bu bölüme sorgulatın */ for ($x=$urunkat; $x>0; $x--) { if ($x == 0) { $kat_adi = /* X'in değerindeki kategoriyi sorgulat kat_adi 'ni aldır */ $sonuc = $kat_adi.'-->'.$sonuc; echo '$sonuc'; } if ($x > 0) { $kat_adi = /* X'in değerindeki kategoriyi sorgulat */ $sonuc = $kat_adi.'-->'.$sonuc; } }Denemedim ama işe yarayabilir. Bu methodu kullanabilirsin. - 10-01-2010, 12:14:34hocam dediğiniz bir yöntem olabilir ancak kategori sistemi örnek verdiğim gibi sıralı bir id ile olursa..ancak veritabanında şöyle olursa örnek olarak;
id | kat_adi | kat_id
1 | Ürünler | 0
2 | Bilgisayar | 1
3 | Donanım | 2
4 | Ekran Kartı | 3
5 | Yazıcı&Fax | 2
6 | Yazıcı | 5
7 | kartuş | 6
yani en üst kategori ürünler onun bir altında bilgisayar var ve bilgisayar kategorisinden donanım ve yazıcı&fax diye bir alt kategori açılıyor..
for döngüsünde kat_id yi çağırıp 0 dan büyükse azalt işleminde örneğin kat_id 5 ise azaltma işlemi ile kat_id si 4,3,2,1,0 olanlara işlem yapıcak...yani donanım kategoriside bu işin içine giriyo başka kategorilerde...
yanlış anlamamışımdır umarım ama bana bu şekilde olmaz gibi geldi...eğer yok çalışır bu şekilde dersen kodları yazıp bi denicem..
farklı bi düşüncesi olan arkadaş varsa yazabilirse sevinirim. - 10-01-2010, 13:33:48O halde bu tarz bir döngü deneyebilirsin.
<? /* SQL Bağlantı */ $kat_adi = /* ID 'deki Kat_adi sorgulat */ $u_id = /* Ürün Id 'sini Sorgulat */ $sonuc = $kat_adi; for ($x=$kat_id; $x>0) { if ($x==0) { echo $sonuc; } if ($x>0) { $yenikat = /* X'deki kat_id 'yi tablodaki id ile sorgulat kat_adi ve kat_id 'ni al Örn.: Donanımın kat_id = 2; ID'si 2 olan kat_adi Bilgisayar buradaki bilgisayar yazısını al ve bilgisayarın kat_id sini al */ $sonuc = $sonuc.'-->'.$yenikat["kat_adi"]; $x = $kat_id; } } ?> - 11-01-2010, 08:50:53$sonuc değişkenine her döngü dönüşünde kategori adı ekleniyor. Aşama aşama anlatmam gerekirse:
1- Ürünün bağlı olduğu kategorinin id ve kat_adi ve kat_id 'sini bul,
2- X'e ürünün id 'sini tanımla,
3- Eğer x==0 'sa zaten Ürünler kategorisinin altındaysa Direk kat_adi 'ni yazdıracak,
4- Eğer x>0 'sa Ürünler kategorisine ulaşana kadar devam edecek;
4a- $sorgulama = Select kat_adi,kat_id from veritabani where id=x; yapıp x'e bağlı olan kat_adi ve kat_id 'yi aldıralım.
4b- $sonuc değişkenini belirtmiştik şimdi kat_adi'nı $sonuc değişkeninin başına ekleyelim.
4c- $x = $kat_id yapalım ve döndüyü sonlandıralım. Böylece Döngü sıfır olana kadar devam eder.
$sonuc değişkeninin çıktı örneği : Ürünler ---> Bilgisayar ---> Donanım ... diye olur.
Umarım yardımcı olabilmişimdir.