v2.5.2
Giriş yap

php dizisini sayfada kullanmak için nasıl saklarım.

kartal
795 defa görüntülendi

Merhaba kimseler görmeden sayfaya getirdiğim php dizim var :)

Şaka bi yana..

Ürün sayfamda ürün ve varyantları var.

Sorgudan gelen varyant bilgilerinin olduğu dizi :
$vary_info; // array

ÜRÜN ADI X

Ürün fiyatı xx

Renk
Siyah - Beyaz

Matterial
Cotton - Keten

Varyant seçtiğimde fiyat ve ürün adınıda varyanta göre değişmesini istiyorum

$vary_info içinde varyant id var ve varyant seçtiğimde seçtirmek için kullanacağım id
hazır oluyor ama sorunum

$vary_info dizisini nerede tutacağım form içinde
araştırmama göre sorgudan gelen diziyi tutamıyorum.

Ajax kullansam kullanıcı sürekli varyantlarla oynadığında sürekli sorgu atılacak

Acaba local storage kullansam sayfa açıldığında varyant bilgilerini saklamak için bunu nasıl yapıyorlar

kartal
697 gün önce

Ürün sayfamdaki varyant seçeneklerim :


        /*
            attribute-1 (1 : property id / value : Renk)
            attribute-0 (0 : property id / value :  Matterial)
            input hidden value="sayfada ki property id leri string içinde(bu durumda '0-1' Renk ve Matterial)"
            radio type içinde ki diziyi php sayfasında explode ile dizi yapıp select_variants ? [] 'ı döndüye alacağım
            
            Bu bölüm sepete eklenirken kullanılıyor.
        */
        
		<div id="attribute-1" class="attribute_list">
			<strong class="attribute_name">Renk</strong>
			<label for="variant_option-6" data-property="6" class="propertys propertys_active">
			    <input type="radio" name="select_variants1[]" id="variant_option-6" value="6" class="variants_radio">
		        Sarı
	        </label></div>
		</div>
		
		<div id="attribute-0" class="attribute_list">
			<strong class="attribute_name">Matterial</strong>
			<label for="variant_option-52" data-property="52" class="propertys propertys_active">
			    <input type="radio" name="select_variants1[]" id="variant_option-52" value="52" class="variants_radio">
		        Sarı
	        </label>
	        <label for="variant_option-51" data-property="51" class="propertys">
			    <input type="radio" name="select_variants0[]" id="variant_option-51" value="51" class="variants_radio">
		        Sarı
	        </label>
	   </div>
	

Diyelim ki
attribute-1 => select_variants1[] => value : 6 seçildi

diğer property de olmayan varmı diye kontrol edip olmayanları pasif hale getirmek
şimdilik burasını yapmadım.

attribute-0 => select_variants0[] => value : 52 seçildi

SKU : 6-52 olmuş oldu
kullanıcı önce 52 yi seçerse 52-6 olur ve istenmeyen durum veri tabanında küçükten büyüğe doru sıralanıyor çünkü.
Yani kayıt edilecek attribute id leri sort ile 52-6 değilde 6-52 şeklinde sıralanıp kayıt ettiriliyor.

Bu yüzden aynı kayıt ettirirken yapıldığı gibi seçilenleride sort ile uygun hale getiriyoruz.

ÖNEMLİ KISIM ?
1.) 6-52 SKU kodunu veri tabanına gönderip varyant bilgilerini alıp kullanıcıya değişik fiyat ve ürün adını gösterebilirim. js tarafında.
2.) Böyle yapmayıp her ürün sayfası açıldığında ürünün varyant bilgilerini ajax ile bir seferde alıp

local storage kayıt ederim.
Ve 6-52 geldiğinde sku = 6-52 diyerek gerekli objeyi alırım.
Kullanıcı başka ürün sayfasına gittiğinde varsa objeyi sildirip üstüne tekrar yazdırırım
Böyle bir dögü olur
Kullanıcı sayfayı açıp varyantları değiştirdiğinde veri tabanından değilde 
tarayıcı deposundan alırım.



array (size=2)
  0 => 
    object(stdClass)[23]
      public 'varyant_id' => string '38' (length=2)
      public 'urun_id' => string '461' (length=3)
      public 'sku' => string '6-51' (length=4)
      public 'urun_adi' => string 'Cotton Matterial Sarı Renk yeni varyant' (length=40)
      public 'single' => string '1' (length=1)
      public 'shop_id' => string '1' (length=1)
      public 'quantity' => string '15' (length=2)
      public 'price' => string '75.00' (length=5)
  1 => 
    object(stdClass)[24]
      public 'varyant_id' => string '39' (length=2)
      public 'urun_id' => string '461' (length=3)
      public 'sku' => string '6-52' (length=4)
      public 'urun_adi' => string 'Poly Matterial Sarı Renk yeni varyant' (length=38)
      public 'single' => string '1' (length=1)
      public 'shop_id' => string '1' (length=1)
      public 'quantity' => string '10' (length=2)
      public 'price' => string '100.00' (length=6)

BU şekilde düşünüyorum.
Not bu varyant sistemi ikili yani sadece 2 özellik üstünden gidiyor.