Почему не срабатывают функции?

В классе Mbasket есть такие функции для увеличения и уменьшения количества товара в корзине
function Minus($iBlock, $iElement){											// ФУНКЦИЯ управляет количеством товара
		$arrBasket = MBasket::GetBasketArray();										// Получить массив корзины
		foreach($arrBasket['basket']['products'] as $key=>$val){
			if($val['IBLOCK_ID'] == $iBlock and $val['ELEMENT_ID'] == $iElement){
              print_r($val['COUNT']);
				$val['COUNT']=$val['COUNT'] - 1;
print_r($val['COUNT']);
			}
		}
		
		MBasket::SetBasketArray($arrBasket);
		return true;
	}
function Plus($iBlock, $iElement){											// ФУНКЦИЯ управляет количеством товара
		$arrBasket = MBasket::GetBasketArray();										// Получить массив корзины
		foreach($arrBasket['basket']['products'] as $key=>$val){
			if($val['IBLOCK_ID'] == $iBlock and $val['ELEMENT_ID'] == $iElement){
				$val['COUNT']=$val['COUNT'] + 1;
			}
		}
		
		MBasket::SetBasketArray($arrBasket);
		return true;
	}

из корзины я вызываю их с помощью обработки гет запроса, а то есть
<button type="button"  onclick="Minus(<?=$arProd['IBLOCK_ID']?>,<?=$arProd['ELEMENT_ID']?>)" class="btn btn-default"><i class="fa fa-minus" aria-hidden="true"></i></button> <button onclick="Plus(<?=$arProd['IBLOCK_ID']?>,<?=$arProd['ELEMENT_ID']?>)" type="button" class="btn btn-default"><i class="fa fa-plus" aria-hidden="true"></i></button>
<

эти кнопки вызывают функцию ajax и get:
function Minus(iBlockID, elementID) {
$.ajax({
    type: "GET",
    url: "_minus.php",
    data: ({IBLOCK_ID : iBlockID, ELEMENT_ID : elementID}),
    success: function(data){
      $("#basket").load("/sect_basket.php");
      $("#basket-page").load("/basket/index_basket-page.php");
    },
    error: function() {
      alert("Ошибка. Обратитесь к администратору!");
    }
  });
			}
function Plus(iBlockID, elementID) {
 $.ajax({
    type: "GET",
    url: "_plus.php",
    data: ({IBLOCK_ID : iBlockID,ELEMENT_ID : elementID }),
    success: function(data){
		$("#basket").load("/sect_basket.php");
		$("#basket-page").load("/basket/index_basket-page.php");
    },
    error: function() {
      alert("Ошибка. Обратитесь к администратору!");
    }
  });
			}

В файлах вызов функций уже из класса:
<?

		require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
	
		CModule::IncludeModule("top10_basket");
		
		MBasket::Minus($_GET["IBLOCK_ID"],$_GET["ELEMENT_ID"]);
	

?>
<?

		require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
	
		CModule::IncludeModule("top10_basket");
		
		MBasket::Plus($_GET["IBLOCK_ID"],$_GET["ELEMENT_ID"]);
	

?>

Но количество не изменяется, в чем дело? подскажите пожалуйста
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MrTimon
Когда вы изменяете количество
$val['COUNT']=$val['COUNT'] - 1;
или
$val['COUNT']=$val['COUNT'] + 1;

то сам массив $arrBasket не изменяется. Вам нужно или изменить эти записи на такие
$arrBasket['basket']['products'][$key]['COUNT']--;
и
$arrBasket['basket']['products'][$key]['COUNT']++;

или в фориче перед объявлением $val поставить знак & , получится как-то так:
foreach($arrBasket['basket']['products'] as $key=>&$val)


Скорее всего ошибка здесь.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 15:01
35000 руб./за проект
19 апр. 2024, в 14:12
30000 руб./за проект