Merhaba arkadaşlar. E ticaret sitelerinde filtreleme mantığında takıldım, acil yardımlarınızı bekliyorum.
Soruyu örnek site üstünde sorayım.
Sayfamız bu: https://www.ayakkabidunyasi.com.tr/e...unluk-ayakkabi
Bu sayfaya Erkek ana kategorisi altındaki günlük ayakkabı seçeneğine tıklayarak ulaştık.
Şimdi bu sayfanın sol kısmındaki filtre seçeneklerinden renk ve ayakkabı numaraları filtrelerine bakalım.
Renk seçeneklerinde toplam 19 renk, ayakkabı numarası seçeneklerinde ise toplam 12 seçenek var. Renk seçeneklerindeki fıstık yeşiline tıklayalım. Şimdi ayakkabı numaralarında 7 seçenek kaldı.
Velhasıl kelam seçilen renkte 43 numara ayakkabı stokta yoksa 43 numara seçeneğini göstermiyor. Veya materyal filtresinde deri seçeneğini seçtiysek ve turuncu renkli deri ayakkabı yoksa turuncu renk seçeneği gösterilmiyor.
Bunu nasıl yaparım? Bi arkadaş kıyısından köşesinden bi yol gösterse, devamını getiririm.
Henüz bu şekilde filtrelemek için bi mantık oluşturamadığımdan özellikleri ekleyip kategorilerle ilişkilendirmeyi da yapamadım. Vaktim kısıtlı acilen bitirmem lazım, yardımlarınızı bekliyorum.
Teşekkürler, saygılar.
E-ticaret sitelerinde filtreleme nasıl yapılıyor ?
12
●1.746
- 18-07-2017, 23:25:57get veya post metodları ile yapabilirsin, dinamik yapmak istersen ise jquery de kullanman lazım ama hazır bir ders dersen yokcodeksper adlı üyeden alıntı: mesajı görüntüle
get kullanmak daha kolay olacaktır gibime geliyor. get ile listeleme diye araştır.
form ile arama yaptıracaksın ve get ile aradığını bulacak ve listeleyeceksin .
çok genel bir bilgi oldu ama mantıksal olarak böyle kodlamaya başlayınca yardım edebileceğim birşey olursa yardım edebiliriim tabi benimde bilgim kısıtlı
- 19-07-2017, 01:08:51Dostum selamlar, sana çok temel düzeyde mantığı anlatıyorum. Dediğin gibi gerisini sen getireceksin.codeksper adlı üyeden alıntı: mesajı görüntüle
Bu iş için en az ikinci seviye normalize olmuş bir veritabanı yapısı oluşturmalısın.
Örnek veriyorum. Ayakkabı satıyorsun. Ayakkabıların numaraları ve renkleri olsun.
En basit düzeyde bu filtrelemeyi yapabilmen için 5 tablo gerekiyor.
Ayakkabı modelleri tablosu, a model ayakkabı b model ayakkabı gibi ayakkabıları satır halinde tutacaksın.
Numaralar tablosu; 41,42,43 gibi ayakkabı numaralarını tutacaksın.
Renkler tablosu; mavi, siyah, kahverengi gibi.
4.tablo ilişki tablosu olacak. Senin satmakta olduğun ürünleri stoğunda olup olmadığına bakmaksızın burada ilişkilendireceksin. Örnek a ayakkabısından 43,44 numara ve siyah, kahverengi renklerinde satıyorsun.
Toplam 4 modelin var, a-43-siyah, a-43-kahverengi, a-44-siyah, a-44-kahverengi.
4 ayakkabı modelini de ilişki tablosunda birbiri ile ilişkilendirdiğin zaman dükkanındaki ürünler belli artık. Son tablon stok tablosu. A-43-siyah modelinin primary key i 5 olsun. Stok tablosunda 5 ürününün stoğu 4 olsun.
Şimdi aramada adam mesela siyah 45 numara a model ayakkabı aradı yada filtreledi ve bu ayakkabıya kadar geldi. sen hemen 4.tablo olan ilişki tablosuna bakacaksın. Bu model dükkanımda satılıyor mu, satmıyoruz. O zaman gerekli hatayı gösterirsin. Varsa bu ürünün stoğuna bakarsın. Varsa satarsın. Yoksa kalmadı dersin. Filtre sonucunda listeleyeceğin ürünleri bu mantıkta listeleyeceksin. Örn 42-45 no arası mavi a,b modelleri filtresi için ilişki tablosunda gerekli sql sorugusunu attığın zaman kalan sonuçlar ürünlerindir.
Biraz acele yazdım telefondan yazdım çünkü, takılırsan devamını sorabilirsin. İyi çalışmalar. - 19-07-2017, 01:37:03@byburkay; Hocam sorunu anladığını da bana yardım edecek kadar bilgin olduğunu da sanmıyorum ama iyi niyetin için teşekkürler.
Ayakkabı numarasını veritabanına kaydedip o numaranın idsini sorgu için kullanmak değil sorunum.

Halihazırda geldiğim nokta budur. Şu anki yapıyı özetleyecek olursak:
store_cat tablosu tüm kategoriler, beden türleri ve bunlara bağlı beden seçenekleri, renkler ve kategorilerle ilişkilendirilecek olan extra özelliklerin tutulduğu sınırsız alt kategori mantığındaki tablodur.
bu tablonun data_type sütununda eklenen kaydın ne olduğu bilgisi tutulur.
cat ise bu bir kategoridir,
size_wrap ise beden/numara/ebat listesidir
size_value ise bir beden listesi içindeki bir beden değeridir (s,m,l,xl gibi)
color ise bir renk seçeneğidir
feature_wrap ise özellik listesidir
feature_option ise bir özellik listesinin altındaki özellik değeridir.
Ve tüm kategori ve diğer veriler parent/parents sütunları ile üst kategorilere veya ilgili kategorilere bağlanmıştır. (Bu ilişkiyi daha sonra ayrı bir tabloya alcam)
Yau yazcam detaylı da çok uzayacak konu kimse okumicak boşa gitçek.
Velhasıl kelam benim sorunum şu haliyle pe bi işime yaramayan store_product_extend_cat tablosudur ki burda ürün idleri ve bu ürünle ilişkilendirilmiş tüm kategori/renkler/stoktaki bedenlerin tutulduğu tablodur. Sadece bir kategoriye veya örneğin sadece 41 numaralı ayakkabıyla ilişkilendirilmiş ürünleri listelemek isteseydim ve 41 numara seçeneğinin ID'si de farz-ı misal 41 olsaydı.
$q = $db->query("SELECT store_product.* FROM store_product LEFT JOIN store_product_extend_cat ON store_product.product_id=store_product_extend_cat. product_id WHERE store_product.status=1 AND store_product_extend_cat.cat_id=41 ORDER BY store_product.product_id DESC LIMIT 0,20");
gibi bi sorgu işimi fazlasıyla görürdü ama böyle bi tabloda erkek koşu ayakkabısı kategorisinde olan ve stokta 41 numara seçeneği olan ve gri rengi olan ayakkabıları listelemek mümkün değil (mantıklı bi mümkünat varsa da ben bilmiyorum). Ki bunların yanına örneğin taban türü listesinden termo taban seçeneği seçilebilir veya daha birçok filtre uygulanabilir.
Konuyu açarken sadece filtreleme seçeneklerinden seçim yaptıkça diğer filtreleme seçeneklerinin azalmasıyla ilgili sormuştum soruyu aslında ama ilgili filtrelemeye göre ürünleri de listeletemiyorum.
İlk mesajımdaki örnek sitede sanıyorum ki benim store_product_extend_cat tabloma benzer bir tablo var ancak sütun sayısı muhtemelen daha fazla. sadece cat_id değil; color_id, size_id gibi seçenekler de var muhtemelen ve bunlar eklenirse kısmen işimi görür ama ben daha özellikli bişey yapmak istediğim için tökezliyorum.
Bu şekilde bi tablo yaparsam kendimi iki şekilde kısıtlamış olurum:
1 - Örneğin panelden ürünü girerken her ürün için tek renk girebilirim halbu ki ürün siyah/beyazsa ben hem beyaz hem de siyahı işaretlemek istiyorum. Arayüzde ilgili ürünün siyahını arayanlar da beyazını arayanlar da bu ürünü görebilsin.
2 - Eklediğim özellikleri filtreleme için kullanamam çünkü buna göre sütun sayısının artması gerekir. Mesela ben panelden kumaş türü diye bi özellik listesi oluşturup bunun altına penye,dantel,likra,cart,curt gibi seçenekler ekleyip bu listenin bayan t-shirtleri kategorisi seçildiğinde filtreleme seçenekleri arasında çıksın diyebilmeliyim. Ve eklediğim tişört penye ise ve omuzları dantelliyse renkte de dediğim gibi ben panelde bu listeden hem penye hem de dantel seçebilmeliyim. arayüzde müşteri dantel de arasa penye de arasa bu ürünü göstermeliyim.
Çok uzattım : S
Yardımcı olabilcek biri çıkarsa detay verebilirim, ki yardımcı olmaktan kastım bana şu kodu yazar mısınız değildir. Mantığın bi köşesinden yakalamama yardımcı olsanız yeter.
Saygılar.
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 01:37:03 -->-> Daha önceki mesaj 01:20:33 --
@mpoy8; teşekkürler hocam yaklaşık aynı zamanda yazmışız sonradan gördüm. Ama bu yapı da üstteki mesajımın son kısımlarında anlatmaya çalıştığım sebeplerden dolayı yetersiz olur. - 19-07-2017, 12:28:00Öncelikle mesajını okuduğumu belirteyim. Boşa gitmedi yani
Anladığım kadarıyla sorun veritabanı yapısının oturmamasından kaynaklanıyor. Böyle durumlarda en iyi çözüm yollarından biri diğer örnekleri incelemektir. Muhtemelen bakmışsındır ama 'e-commerce database' şeklinde bir aramayla veritabanı modellerini incelemeni tavsiye ederim. Senin anlattıklarına bakarak aşağıdaki modelde bir çözüm olabilir.
http://www.softslate.com/documentati...es/full2.0.gif - 19-07-2017, 17:02:14O zaman sanırım ben tam problemi anlamadım. Daha detaylı bir özetle mesaj atabilir misin? Mautic gibi marketing sistemlerinin veritabanlarıyla haşır neşirim sanırım sana da bir ipucu verebilirim. 😄codeksper adlı üyeden alıntı: mesajı görüntüle
çok genel bir bilgi oldu ama mantıksal olarak böyle kodlamaya başlayınca yardım edebileceğim birşey olursa yardım edebiliriim tabi benimde bilgim kısıtlı 