MySQL Yapı Breadcrumbs

2 Cevap php

Benim web olası kategorilerini tanımlayan bir tablo var - alanlar bu gibi görünmelidir:

  - id
  - name
  - parentID

Bilgiler böyle bir şey saklanır:

+-----+------+----------+
| id  | name | parentID |
+-----+------+----------+
|  1  | pets |        0 |
+-----+------+----------+
|  2  | cats |        1 |
+-----+------+----------+
|  3  | dogs |        1 |
+-----+------+----------+

A parentID 0 kategori / sayfa ev seviyede olduğunu gösterir. Ben hızlı ve kolay ana kategorileri oluşturmak için bir yol arıyorum.

Akla gelen ilk yöntem, SQL sorguları bir dizi oldu, ama hızla bu sinsice sitesi var daha karmaşık kaynak yoğun olacağını fark etti.

Mysql kılavuzu aracılığıyla okuma, ancak ben burada uygulamaya bu koymak istiyorum nasıl emin değilim, mysql döngüler ve koşullu ifadeler kullanabilirsiniz gördüm.

İdeal olarak, tüm doğrudan ilgili ana unsurları çeker tek bir sorgu var istiyorum.

Ben Evcil kategorisinde bakıyordu Eğer üst seviyede, çünkü ben sadece home görecekti. En kısa zamanda ben detaya olarak (cats içine, ya dogs veya pets altında sayfa) sonra çubuğunda pets görmelisiniz - Aynı sonraki çocuk kategoriler ve sayfalar için de geçerli.

Bu tarzda depolanan bilgileri kullanarak kategorilerin bir listesini oluşturmak için en etkili yolu nedir? Bu soru daha fazla açıklama gerektiriyorsa, sormak, ve ben daha fazla bilgi sağlamak için elimden geleni yapacağım lütfen.

Clarification: Bu CMS parçasıdır - ve gibi, kullanıcıların anında kategorilerde değişiklik yapmak için yetenek ihtiyacımız olacak. Ben (örneğin iç içe setleri gibi) çeşitli veri depolama düzenleri baktım ve onlar navigasyon değişiklik yapmak için basit bir formu iyi kendilerini borç görünmüyor.

Bu nedenle, her hangi bir yöntem kolayca a) bir kullanıcı tarafından anlaşılabilir ve b) bir kullanıcı için kolay uygulanabilir olması gerekir.

Kategoriler iyi bir PC'de klasörleri yerine etiketleri olarak tarif edilmektedir. Eğer herhangi bir kategoriyi görüntülerken, bu kategorideki hemen çocuklar, hem de hemen alt sayfaları görebilirsiniz.

Eğer bir kategori veya bir sayfasını görüntülediğinizde, ana kategoriler (ama kendisi görülebilir).

Örnek: Ben var German Shepard ki dogs ki pets altında altında bulunan

When viewing *pets*:           Home
When viewing *dogs*:           Home -> Pets
When viewing *German Shepard*: Home -> Pets -> Dogs

2 Cevap

Yerine "iç içe kümeleri" model kullanmayı düşünün: Managing Hierarchical Data in MySQL.

Update (soru için açıklama dayanarak): iç içe setleri modeli (aslında ben neden olacağını hayal oldukça zor bir zaman var) son kullanıcılara maruz olmak zorunda değildir. (Yeni bir klasör / alt klasör eklenmesi; .. Farklı bir yol, vb klasör taşıma) Tüm dizin tür operasyonlar biraz sonra başkalarına uygulamak için biraz sert olsa, iç içe setleri modeli desteklenebilir. Ben hem ekleme ve (alt) klasörünün silinmesi için örnekler sunar bağlantılı olduğunuz makale.

Bir yığın veya oturumda saklanan kırıntı içeren (kullanıcı kendi tarama için filtreleri nasıl uyguladıklarını göre sıralı) emretti seti, olabilir mi?

Ben çapraz-sorgulama başladı gaddar elde görebiliyordu, ama bazen veri hiyerarşik değil, etiketleri bir çorba daha, ve yukarıda başlar senin etiket çorba açıklama kırıntı olmak.

Çoğu web siteleri aslında aşağı iyi (veya herhangi bir) etiket çorba delme özelliği yoktur. Örneğin, kaç kez bir web sitesinde satış CD'leri bakmak olmuştur ve sadece Metal CD'leri (örneğin) görmek için detaya istedim, ama "Rock ve Metal" soldaki linke tıklayarak dışarı aldı var yerine geçerli tarama devletin bir filtre gibi davranarak üst düzey metal kategori.

So - senin sorunun aslında üzerine sahte bir hiyerarşi uyguluyorsanız bir etiket çorbası? Aslında otomatik içine öğeleri geçebilir etiketi nesil kütüphaneler ve etiket arama mekanizmaları bakıyor olmalıdır? Tamam, ben kişisel web sitesi hiç etiket aramayı gerektirecek kadar karmaşık olmayacak eminim, ama genel olarak, ben düşünmeye değer olduğunu düşünüyorum.