• 10-01-2010, 00:08:49
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    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...
  • 10-01-2010, 01:06:19
    #2
    Üyeliği durduruldu
    her 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:00
    #3
    tabloda ş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:03
    #4
    for 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:34
    #5
    hocam 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:48
    #6
    O 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, 01:06:08
    #7
    hocam $sonuc değişkeninin görevini anlamadım... kategori adını sonuç değişkeninemi atıyoruz..

    kod olarak değilde mantığını anlatırsanız çözmem daha kolay olabilir..zahmet olmazsa tabii
  • 11-01-2010, 08:50:53
    #8
    $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.