@WebforSelf

Скрипт не правильно добавляет количество товаров php?

Есть сайт. ТЫЦ

При добавлении товара и дополнительных товаров к нему
Кладу товар и 2 доп товара (2шт каждый)
5fe8fc07f1117505798585.png
По итогу кладется в корзину не один а два товара, а дополнительные товары не 2 а 4.
5fe8fc1b5e403972690541.png

Сама функция добавления товара
Функция добавления товара

/*
	*
	* Добавление варианта товара в корзину
	*
	*/
	public function add_item($variant_id, $amount = 1, $add_variants=array())
	{
		// Выберем товар из базы, заодно убедившись в его существовании
		$variant = $this->variants->get_variant($variant_id);

		// Проверяем дополнительные варианты
        $data = 0;
        if(!empty($add_variants))
        {
		    $variants = $this->variants->get_variants(array('id'=>array_keys($add_variants)));
            if(!empty($variants)){
                foreach($variants as $av)
                {
                    if($av->stock>0)
                    {
                        $amount = max(1, $add_variants[$av->id]);
                        $ext_variants[$av->id] = intval(min($amount, $av->stock));
                    }
                }
            }
            if(!empty($ext_variants))
               $data = date("mdyHis");
        }

        $key = $this->getKey(array('variant_id'=>$variant_id, 'add_variants'=>$ext_variants, 'date'=>$data));

		$amount = max(1, $amount);

		if(isset($_SESSION['shopping_cart'][$key]))
      		$amount = max(1, $amount+$_SESSION['shopping_cart'][$key]['amount']);

		// Если товар существует, добавим его в корзину
		if(!empty($variant) && ($variant->stock>0) )
		{
			// Не дадим больше чем на складе
			$amount = min($amount, $variant->stock);

		    $_SESSION['shopping_cart'][$key] = array('variant_id'   => $variant_id,
		                                             'amount'       => intval($amount),
		                                             'add_variants' => $ext_variants
		    );
		}
	}
	function getKey($prop_list)
	{
	    $ret = false;
	    if (!empty($prop_list)) {
	        ksort($prop_list);
	        $ret = md5(serialize($prop_list));
	    }
		return $ret;
	}



Где
5fe8fcc938f5b547683835.png

Не пойму в чем проблема.

Сам ход событий такой, через аякс отправляем
// Аяксовая корзина (добавление варианта)
$(document).on("submit", "form.variants", function (e) {
	e.preventDefault();

	vars = $(this).serializeArray().filter(item => +item.value);	
    console.log(vars);
	$.ajax({
	url: "ajax/cart.php",
	data: vars,
	dataType:'json',
	success:function(data){ 
		$('#cart_informer').html(data.desktop);
		$('#cart_informer_main').html(data.main);
        $('#cart_informer_mini').html(data.mini);
		$('#cart_informer_mobile').html(data.mobile);
		$.fancybox.close();
        } 
      });  
});


Дальше через ajax/cart.php

// Добавляем товар
	$simpla->cart->add_item($variant, $amount, $add_variants);


Выполняем функцию которая выше под спойлером
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы