PHP Ürün Varyant Sistemi
Herkese iyi çalışmalar
PHP ile ürün varyant sistemi yapmaya çalışıyorum fakat kendi yöntemlerim pek istediğim gibi olmadı
Acaba varyant mantığı konusunda fikir verebilir misiniz?
Örnek bir ürünümüz kılıf olsun
Marka: Samsung (Markayı marka tablomdan id ile eşleştirebilirim)
Model: S10 Plus
Renk: Kırmızı
Stok: 10
Fiyat: 20TL
ama aynı zamanda çoğu ürününde varyantı yok yani nasıl pratik bu işlemleri halledebilirim
Örnek şöyle birşey yaptım:
https://i.hizliresim.com/msp30qc.jpg
yaptığım sistemde inputun içine modelleri yazdım ve virgül ile ayırıp dizi ile ayrıştırdım
Gelişmiş drag drop multidimensional varyant sistemi, Laravel, Codeigniter veya .Net gibi sistemlere entegre edilebilir. Veriler JSON formatında tüm veritabanları ile uyumludur.
DRUPAL ile hazırlanan gelişmiş özelliklere sahip bidolubaski.com referans alınmıştır.
https://www.hizliresim.com/f21fz4x
Kod örneğine bakabilirsin.
<?php
$return_arr = array();
$return = [];
$varyant_listesi = json_decode($urun->varyant, true);
$return['varyant_listesi'] = $varyant_listesi;
// Varyant fiyat hesaplama
foreach ($varyant_adi as $key => $varyant_adi){
foreach ($varyant_listesi[$key]['alt_ozellik'] as $key => $varyant_detay){
if ($varyant_detay['adi'] == $varyant_adi ){
$urun_fiyati = $urun->fiyat;
if ($varyant_detay['islem']=='%'){
$detay += ($urun_fiyati / 100 ) * $varyant_detay['fiyat'];
}
if ($varyant_detay['islem']=='+'){
$detay = $detay + $varyant_detay['fiyat'];
}
}
}
}
$toplam_varyant_fiyati = $detay + $urun_fiyati;
// Adet fiyat hesaplama
$adet_listesi = json_decode($urun->varyant_fiyat, true);
foreach ($adet_listesi as $key => $adet){
$urun_fiyati = $toplam_varyant_fiyati;
if ($adet['islem']=='%'){
$return['fiyat_listesi'][$adet['adet']] = number_format(($urun_fiyati / 100 ) * $adet['fiyat'] + $toplam_varyant_fiyati, 2);
}
if ($adet['islem']=='+'){
$return['fiyat_listesi'][$adet['adet']] = number_format($detay + $adet['fiyat'] + $toplam_varyant_fiyati, 2);
}
}
$return['secilen_adet'] = $this->input->post('adet');
echo json_encode($return);
?>