Ü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.
hepsi buradanın varyantlı ürününü test ettim
network de istek gönderildiğini gördüm
sanırım ajax kullanmalarının sebebi
veri güncellenirse hatalı veri sepete eklenmesin diye
düşünüyorum.
Ama düşündürücü bir kısım burası sonyçta hepsiburada
sonuçta kendi sunucuları ve kimbilir ne kadar güçlüdür yani ajax orada uygun
ama küçük ölçekli bir site için uygun değil.
Sayfa ikl kez yüklendiğinde varyant bilgilerini javascript değişkende tutmak olur gibi sanki.
Şimdi
Upload ederken FILES disisini var_dump($_FILES);
diye bastırırsan gelen dosyaların yada dosyanın tipi orada var.
$_FILES['duyurular_resimyol']["type"]
sütuna unique kısıtlaması getir
db bağlantı değişkenine hata varmı
bak
db->errorInfo kendi içinde dizi döndürür
duplicate kodu varmı bak varsa
aynı kayıt var uyarısı verdirirsin
yapamazsan bilgisayardan gönderirim
ayrıntısını
Çok normal çünkü session bilgilerin çıkış yaptan önce sayfanın en üstünde tanımlamalısın.
Kodların çok karışı bu tür işlemlerde kodları parçala yani aynı sayfada işlem yaptırma.
Login sayfan ayrı
Login ve logout için ayrı sayfa kullan.
youtube dan bakabilirsin.
Tablo yapını gösterrsen burda epey cevap veren çıkacaktır.
Giriş yaptırdığın sorgunun altında kontrol et kullanıcı doğrulamasından geçiyormu muhtemelen hatan var.
Arkadaşlar sorunu buldum yani aslında bir kodlama hatası değil olay şu.
form içindeki files dizisine eklenen dosyalar(resimler) eğer ajax ile aşağıdaki gibi eklenmez ise append ile
ön izlemeye ben nekadar resim ekletirsem ekleteyim sadece ekle butonu ile (input file) son eklenenler post olacak.
const data = new FormData(productForm.formId);
for (const [key, file] of Object.entries(productForm.getFiles)) {
data.append("img[]",file);
}
bu şekilde yapma bence aynı dizide anahtar adı ilçe değwri id olabilir.
kodumda hata yok çoklu dosya yüklerken
ajax ile dönen hata mesajından sonra kullanıcı önizlemeli
forma tekrar resim ekleyip post ettiğinde önceki önizlenen resimler files içine eklenmiyor
yani files sıfırlanıyor sanırım