v2.5.2
Giriş yap

PHP Ürün Varyant Sistemi

spleidanger
1,177 defa görüntülendi

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

Cevap yaz
Cevaplar (6)
emmir2
1109 gün önce
<?php
if($_POST){

        $islem = $db->prepare("INSERT INTO urun SET 
        	baslik = ?, 
            title = ?");
        $islem = $islem->execute(array(
        	$_POST['baslik'],
          	$_POST['title']));
        $id = $db->lastInsertId();

    $i = 0;
    if(isset($_POST['varyant_adi'])){
    	foreach ($_POST['varyant_adi'] as $s) {
    		$islem = $db->prepare("INSERT INTO varyantlar SET urun_id = ?, baslik = ?");
        	$islem = $islem->execute(array($id,$s));
        	$varyant_id = $db->lastInsertId();

        	$ii = 0;
        	if(isset($_POST['urunvaryanlari'.$i])){
        		foreach ($_POST['urunvaryanlari'.$i] as $as) {
        			$islem = $db->prepare("INSERT INTO urun_varyant SET urun_varyant_id = ?, baslik = ?, marka = ?, renk = ?, fiyat = ?");
        			$islem = $islem->execute(array($varyant_id,$as,$_POST['marka'.$i][$ii],$_POST['renk'.$i][$ii],$_POST['fiyat'.$i][$ii]));
        			$ii++;
        		}
        	}

        	$i++;
    	}
    }

    if($islem){
        echo b();
    }else{
        echo h();
    }
	
}

Çekmek için

<?php
	$query = $db->query("SELECT * FROM varyantlar WHERE urun_id = '{$urun['id']}' ORDER BY id ASC", PDO::FETCH_ASSOC);
	if($query->rowCount()){
	foreach( $query as $row ){
	$query1 = $db->query("SELECT * FROM urun_varyant WHERE urun_varyant_id = '{$row['id']}' ORDER BY id ASC", PDO::FETCH_ASSOC);
	if($query1->rowCount()){
	foreach( $query1 as $row1 ){ ?>
					
	<input type="text" name="s" value="<?php echo $row1['tablo_Adi'] ?>">
	<input type="text" name="s" value="<?php echo $row1['tablo_Adi'] ?>">
	<input type="text" name="s" value="<?php echo $row1['tablo_Adi'] ?>">
	<input type="text" name="s" value="<?php echo $row1['tablo_Adi'] ?>">
					
	<?php } } } }?>
					
					
suko79
994 gün önce

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);
    ?>
spleidanger
999 gün önce

Cevaplar için teşekkürler sorunumu hallettim :)

kartal
1011 gün önce

Bu gösterilen mantık çok yanlış bu şekilde yapma sakın !
Özelikle foreach içinde sorgu atılmış tavsiye etmem.
Bande şu sıralar bununla uğraşıyorum.

qplot
1110 gün önce

emmir2 harbiden basitmiş sağol :)

emmir2
1110 gün önce

sistem basit aslın da Varyant için atıyorum urun_varyant tablosu oluşturun daha sonrasın da foreach döngüsün de ürün kaydederken Mysql tablonuza kaydedin bitti bile :)