php dizisini sayfada kullanmak için nasıl saklarım.
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
Ü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.