folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder [PHP - MYSQL] - Varyant Sistemi İle İlgili Beyin Fırtınası İsteği



[PHP - MYSQL] - Varyant Sistemi İle İlgili Beyin Fırtınası İsteği

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    coder2
    coder2's avatar
    Kayıt Tarihi: 15/Mart/2007
    Erkek

    (SKU - Stok Keeping Unit diye geçer) diye bir kavram var. Her bir varyanta ürün kodu oluşturup sisteme alt ürün olarak ekletmek.

    Aşağıdaki URL de bu konuda güzel bir tartışma yapılmış. İncelemenizi tavsiye ederim.

     

    https://laracasts.com/discuss/channels/general-discussion/custom-ecommerce-dynamic-product-variants


    Önceleri Kızlar Utanınca Kızarırdı Şimdilerde Kızarınca Utanıyorlar..
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek
    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for secenekler
    -- ----------------------------
    DROP TABLE IF EXISTS `secenekler`;
    CREATE TABLE `secenekler` (
      `secenek_id` int(11) NOT NULL AUTO_INCREMENT,
      `secenek_adi` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`secenek_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of secenekler
    -- ----------------------------
    INSERT INTO `secenekler` VALUES ('1', 'Beden');
    INSERT INTO `secenekler` VALUES ('2', 'Renk');
    INSERT INTO `secenekler` VALUES ('3', 'Yaka');
    INSERT INTO `secenekler` VALUES ('4', 'Kol');
    
    -- ----------------------------
    -- Table structure for secenek_degerleri
    -- ----------------------------
    DROP TABLE IF EXISTS `secenek_degerleri`;
    CREATE TABLE `secenek_degerleri` (
      `secenek_deger_id` int(11) NOT NULL AUTO_INCREMENT,
      `secenek_id` int(11) DEFAULT NULL,
      `deger_adi` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`secenek_deger_id`),
      KEY `secenek_id` (`secenek_id`),
      CONSTRAINT `secenek_degerleri_ibfk_1` FOREIGN KEY (`secenek_id`) REFERENCES `secenekler` (`secenek_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of secenek_degerleri
    -- ----------------------------
    INSERT INTO `secenek_degerleri` VALUES ('1', '1', 'XS');
    INSERT INTO `secenek_degerleri` VALUES ('2', '1', 'S');
    INSERT INTO `secenek_degerleri` VALUES ('3', '1', 'M');
    INSERT INTO `secenek_degerleri` VALUES ('4', '1', 'L');
    INSERT INTO `secenek_degerleri` VALUES ('5', '1', 'XL');
    INSERT INTO `secenek_degerleri` VALUES ('6', '1', 'XXL');
    INSERT INTO `secenek_degerleri` VALUES ('7', '2', 'Kırmızı');
    INSERT INTO `secenek_degerleri` VALUES ('8', '2', 'Mavi');
    INSERT INTO `secenek_degerleri` VALUES ('9', '2', 'Mor');
    INSERT INTO `secenek_degerleri` VALUES ('10', '2', 'Yeşil');
    INSERT INTO `secenek_degerleri` VALUES ('11', '3', 'Bisiklet');
    INSERT INTO `secenek_degerleri` VALUES ('12', '3', 'Polo Yaka');
    INSERT INTO `secenek_degerleri` VALUES ('13', '4', 'Uzun');
    INSERT INTO `secenek_degerleri` VALUES ('14', '4', 'Kısa');
    
    -- ----------------------------
    -- Table structure for urunler
    -- ----------------------------
    DROP TABLE IF EXISTS `urunler`;
    CREATE TABLE `urunler` (
      `urun_id` int(11) NOT NULL AUTO_INCREMENT,
      `urun_adi` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`urun_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of urunler
    -- ----------------------------
    INSERT INTO `urunler` VALUES ('1', 'TBT Tişört');
    INSERT INTO `urunler` VALUES ('2', 'TBT Don');
    
    -- ----------------------------
    -- Table structure for varyantlar
    -- ----------------------------
    DROP TABLE IF EXISTS `varyantlar`;
    CREATE TABLE `varyantlar` (
      `varyant_id` int(11) NOT NULL AUTO_INCREMENT,
      `urun_id` int(11) DEFAULT NULL,
      PRIMARY KEY (`varyant_id`),
      KEY `urun_id` (`urun_id`),
      CONSTRAINT `varyantlar_ibfk_1` FOREIGN KEY (`urun_id`) REFERENCES `urunler` (`urun_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of varyantlar
    -- ----------------------------
    INSERT INTO `varyantlar` VALUES ('1', '1');
    INSERT INTO `varyantlar` VALUES ('2', '1');
    INSERT INTO `varyantlar` VALUES ('3', '1');
    INSERT INTO `varyantlar` VALUES ('4', '2');
    INSERT INTO `varyantlar` VALUES ('5', '2');
    
    -- ----------------------------
    -- Table structure for varyant_degerler
    -- ----------------------------
    DROP TABLE IF EXISTS `varyant_degerler`;
    CREATE TABLE `varyant_degerler` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `varyant_id` int(11) DEFAULT NULL,
      `secenek_id` int(11) DEFAULT NULL,
      `secenek_deger_id` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `varyant_id` (`varyant_id`),
      KEY `secenek_id` (`secenek_id`),
      KEY `secenek_deger_id` (`secenek_deger_id`),
      CONSTRAINT `varyant_degerler_ibfk_1` FOREIGN KEY (`varyant_id`) REFERENCES `varyantlar` (`varyant_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
      CONSTRAINT `varyant_degerler_ibfk_2` FOREIGN KEY (`secenek_id`) REFERENCES `secenekler` (`secenek_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
      CONSTRAINT `varyant_degerler_ibfk_3` FOREIGN KEY (`secenek_deger_id`) REFERENCES `secenek_degerleri` (`secenek_deger_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of varyant_degerler
    -- ----------------------------
    INSERT INTO `varyant_degerler` VALUES ('1', '1', '1', '3');
    INSERT INTO `varyant_degerler` VALUES ('2', '1', '2', '8');
    INSERT INTO `varyant_degerler` VALUES ('3', '1', '3', '11');
    INSERT INTO `varyant_degerler` VALUES ('4', '1', '4', '14');
    INSERT INTO `varyant_degerler` VALUES ('5', '2', '1', '1');
    INSERT INTO `varyant_degerler` VALUES ('6', '2', '2', '9');
    INSERT INTO `varyant_degerler` VALUES ('7', '2', '3', '12');
    INSERT INTO `varyant_degerler` VALUES ('8', '2', '4', '13');
    INSERT INTO `varyant_degerler` VALUES ('9', '3', '1', '6');
    INSERT INTO `varyant_degerler` VALUES ('10', '3', '2', '7');
    INSERT INTO `varyant_degerler` VALUES ('11', '4', '1', '6');
    INSERT INTO `varyant_degerler` VALUES ('12', '4', '2', '7');
    INSERT INTO `varyant_degerler` VALUES ('13', '5', '1', '1');
    INSERT INTO `varyant_degerler` VALUES ('14', '5', '2', '8');
    

     

    boyle bişi yaptım ama

    sorguda boyle

    stokta varyantları tutacan

     

    select 
    a.varyant_id,
    c.urun_adi,
    GROUP_CONCAT(d.deger_adi) as varyant_ozellikleri
    from
    (select * from varyant_degerler) as a
    LEFT JOIN
    (select * from varyantlar) as b on b.varyant_id=a.varyant_id
    LEFT JOIN
    (select * from urunler) as c on c.urun_id=b.urun_id
    LEFT JOIN
    (select * from secenek_degerleri) as d on d.secenek_deger_id=a.secenek_deger_id
    GROUP BY a.varyant_id

     


    |sadece aptalların başarısı ders notu ile ölçülür|
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    hipokondriyak
    hipokondriyak's avatar
    Kayıt Tarihi: 02/Temmuz/2007
    Erkek

    Eticaret sektorunde danismanlik yaptigim firmalarda gordugum sey

    Kirmizi 

    Mavi 

    Siyah 

    Farklin urunler ve farkli stok kodlarina ait olmaktadir.

    Hatta bedene gore de stok kodlarini ayristirmajta farklilik.var.

    Atlet kirmizi m

    Atlet kirmizi s

    Atlet kirmizi l tek urun stok kodu

    Atlet siyah sml farkli stok kodu 

    Bu sekilde olusturmalisin

     


    Homo sapiens, yaşamak için, diğer canlıların yaşamasına muhtaç; obligat parazit türüdür. "Sen olursan boş bardak , sana olur koyan çok su. a.g."
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Https
    Https's avatar
    Kayıt Tarihi: 05/Ağustos/2017
    Erkek
    coder2 bunu yazdı

    (SKU - Stok Keeping Unit diye geçer) diye bir kavram var. Her bir varyanta ürün kodu oluşturup sisteme alt ürün olarak ekletmek.

    Aşağıdaki URL de bu konuda güzel bir tartışma yapılmış. İncelemenizi tavsiye ederim.

     

    https://laracasts.com/discuss/channels/general-discussion/custom-ecommerce-dynamic-product-variants

    İlginçmiş hocam, attım fava inceleyeceğim bende.

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lepusmorris
    lepusmorris's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

    iyice kafam karıştı :D

    opensource yazılımlara göz atıyorum.


    ..
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manglerman
    manglerman's avatar
    Kayıt Tarihi: 30/Aralık/2003
    Erkek

    daha kolay anlayabil diye senin gönderiğin imaj üzerinde düzenleme yaptım hocam :)

     

    bu adımda yapman gereken tek şey "ÜRÜN VARYANTLARI" tablosuna stok ekleyip ordan takip etmek :)

     

    kolay gelsin.


    türk kızlarından sabun yapalım, rus kızları elini yıkasın.:)
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lepusmorris
    lepusmorris's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

    en pratik ve anlaşılırı aşağıdaki yapı gibi ama bunda ürün stoğunu hangi sorgu ile alacağım. mesela ziyaretçi siteden kırmızı ve small'u seçti. tabloda bunu nasıl bir sorgu ile kontrol edeceğim?

     

    products:
     ------------------
    |  id  |    name   |
     ------------------
    |  1   |  t-shirt  | 
     ------------------
    
    variants:
     ------------------------------
    |  id  |  product_id  |  name  |
     ------------------------------
    |  1   |      1       |  size  |
     ------------------------------
    |  2   |      1       |  color |
     ----------------------------
    
    variant_options:
     ---------------------------------------------
    |  id  |  product_id  |  variant_id  |  name  |
    ---------------------------------------------
    |  1   |      1       |      1       |  small |
    ---------------------------------------------
    |  2   |      1       |      1       |  large |
    ----------------------------------------------
    |  3   |      1       |      2       |  red |
    ---------------------------------------------
    |  4   |      1       |      2       |  blue |
    ----------------------------------------------
    
    skus:
     -----------------------------------------------
    |  id  |  product_id  |  sku  |  price  |  qty  |
    ------------------------------------------------
    |  1   |      1       | 4xx01 |  140    |   5   |
    ------------------------------------------------
    |  2   |      1       | 4xx02 |  140    |   10  |
    ------------------------------------------------
    |  3   |      1       | 4xx03 |  160    |   8   |
    ------------------------------------------------
    |  4   |      1       | 4xx04 |  160    |   15  |
    
    sku_values:
     ----------------------------------------------------------------------
    |  id  |  product_id  |  variant_id  |  variant_option_id  |  skud_id  |
    -----------------------------------------------------------------------
    |  1   |      1       |       1      |         1           |      1    |
    -----------------------------------------------------------------------
    |  2   |      1       |       2      |         3           |      1    |
    -----------------------------------------------------------------------
    |  3   |      1       |       1      |         1           |      2    |
    -----------------------------------------------------------------------
    |  4   |      1       |       2      |         4           |      2    |
    -----------------------------------------------------------------------
    |  5   |      1       |       1      |         2           |      3    |
    -----------------------------------------------------------------------
    |  6   |      1       |       2      |         3           |      3    |
    -----------------------------------------------------------------------
    |  7   |      1       |       1      |         2           |      4    |
    -----------------------------------------------------------------------
    |  8   |      1       |       2      |         4           |      3    |
    -----------------------------------------------------------------------

    ..
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yolbulucu
    yolbulucu's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Homo

    her bir rengi ayrı ürün olarak tut ve attributelarla birbirine bağla hocam.

    dijital reklam firmasında çalışıyorum, büyük perakendeciler müşterimiz. bu şekilde yapıyorlar çünkü : 

    stokları ayrı ayrı takip edebiliyorsun

    stoğu az olana kampanya yapmak gibi şeyler daha kolay oluyor

    reklam çıkarken tam istediğin ürüne çıkabiliyorsun. 

    vs vs bir sürü avantajın olacak


    29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manglerman
    manglerman's avatar
    Kayıt Tarihi: 30/Aralık/2003
    Erkek

    pmden sorduğun soruya buraya cevap vereyim hocam :) senin tablo yapısını inceleme şansım olmadı ama ben şu şekilde yapardım :)

     

    --MıxedVariantChild tablosuna da RowId(identity), ProductId ve VariantOptionId eklemen gerekiyormuş şimdi farkettim :)
    
    
    --aşağıdaki değerlerin bir yerden geldiğini varsayıyorum
    DECLARE @variantId1 AS INT =1 --renk varyantı
    DECLARE @variantId2 AS INT =2 --beden varyantı
    
    DECLARE @variantValue1 AS INT =1 --kırmızı valuesi
    DECLARE @variant1Value2 AS INT =2 --small valuesi
    
    
    SELECT *  FROM ProductsVariants WHERE ProductId IN 
    (
    		SELECT ProductId FROM MixedVariantChild WHERE 
    		(VariantId=@variantId1 AND  VariantOptionId=@variantValue1) OR
    		(VariantId=@variantId2 AND  VariantOptionId=@variant1Value2) 
    )

     

     

    Yolbulucunun dediği yöntem de mantıklı ama tercih meselesi tabi.

     

    yazarken ufak tefek mantık hataları çıkabilr. ama genel mantık bu şekilde en azından.

    manglerman tarafından 01/Kas/19 09:57 tarihinde düzenlenmiştir

    türk kızlarından sabun yapalım, rus kızları elini yıkasın.:)
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lepusmorris
    lepusmorris's avatar
    Kayıt Tarihi: 31/Mart/2007
    Erkek

    hocalar konuyu anladım; sindirdim. hepinize ayrı ayrı teşekkür ederim.


    ..
Toplam Hit: 4700 Toplam Mesaj: 22
php