Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2017, 20:05   #1
Евгений 86
 
Регистрация: 21.03.2016
Сообщений: 7
По умолчанию Корзина для интернет магазина

Добрый вечер! пишу корзину для ИМ на сессиях, возник вопрос как сделать асинхронное изменение кол-ва товара. Я хочу что бы работал + и - , и товар уменьшался или прибавлялся на единицу. Но у меня происходит одновременно уменьшение и прибавление кл-ва у все добавленных товарах.
я попробовал использовать switch case что бы определить минус или плюс нажат
Вобщем этот код не работает. Подскажите пожалуйста что нужно исправить.
это минус в разметке
Код HTML:
<a href="cart.php?action=minus">-</a>
это switch case

PHP код:
case 'minus':

    
update_minus_cart();

    echo 
'<script type="text/javascript">
window.location = "cart.php?action=oneclick"
</script>'
;
    
    break; 
это сама функция update_minus_cart()
Код:
function update_minus_cart()
{
	foreach ($_SESSION['cart'] as $id => $qty)
	{
		$rrr = $qty - 1;
	$_SESSION['cart'][$id] = $rrr;

}
}
Евгений 86 вне форума Ответить с цитированием
Старый 04.01.2017, 20:18   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Евгений 86 Посмотреть сообщение
'<script type="text/javascript">
window.location = "cart.php?action=oneclick"
</script>';
Что за странный способ редиректа? Можно ж просто использовать header Location.

Вообще такое наверно удобнее с помощью ajax отправлять, без перезагрузки страницы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.01.2017, 20:33   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Евгений 86 Посмотреть сообщение
Но у меня происходит одновременно уменьшение и прибавление кл-ва у все добавленных товарах.
Ну так наверное ж нужно передать также и ID товара, у которого нужно изменить количество, а не только action, не?
Элементарно же.
Andkorol вне форума Ответить с цитированием
Старый 04.01.2017, 21:09   #4
Евгений 86
 
Регистрация: 21.03.2016
Сообщений: 7
По умолчанию

Я написал с помощью аякса, но у меня вообще не выходит сделать изменение кол-ва товара. Получается абракадабра когда аяксу прихоит ответ.
У меня что получается на аяксе
когда я нажимаю на "-" и было например кол-во 4шт
скрипт отрабатывает и возвращает 3
затем я нажимаю еже раз "-" ничего не происходит также остается 3
а если нажму перезагрузить вобще возвращается обратное кл-во 4.
я долго мурыжился. Если сможете подсказать могу выложить код
там в принципе просто все
Евгений 86 вне форума Ответить с цитированием
Старый 04.01.2017, 21:42   #5
Евгений 86
 
Регистрация: 21.03.2016
Сообщений: 7
По умолчанию

это в разметке
Код:
<li><p align="center" iid="'.$id.'" class="count-minus">-</p></li>
это обрабочтик
Код:
$('.count-minus').click (function() {
	
	var iid = $(this).attr("iid");
	
	$.ajax({
		type: "POST",
		url: "include/count-minus.php",
		data: "id="+iid,
		dataType: "html",
		cache: false,
		success: function(data) {
			$("#input-id"+iid).val(data);
			loadcart();
			
			var priceproduct = $("#tovar"+iid+" > p").attr("price");
			result_total = Number(priceproduct) * Number(data);
			
			$("#tovar"+iid+" > p").html(fun_group_price(result_total)+" руб." );
			$("#tovar"+iid+" > h5 > .span-count").html(data);
			itog_price();
		}
		});
	
});
а это файл count-plus.php где происходит перерасчет
Код:
<?php
if($_SERVER["REQUEST_METHOD"] == "POST")
{
define('ххх', true);  
include("db_connect.php");
include("../functions/functions.php");
session_start();

$id = clear_string($_POST["id"]);
  
$new_count = $_SESSION['cart'][$id] - 1;

echo $new_count;    
}
Евгений 86 вне форума Ответить с цитированием
Старый 04.01.2017, 21:53   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

http://www.programmersforum.ru/showt...73#post1656582
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.01.2017, 10:53   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Евгений 86 Посмотреть сообщение
когда я нажимаю на "-" и было например кол-во 4шт
скрипт отрабатывает и возвращает 3
затем я нажимаю еже раз "-" ничего не происходит также остается 3
а если нажму перезагрузить вобще возвращается обратное кл-во 4.
я долго мурыжился.
Не нужно «долго мурыжиться» – нужно просто включить мозг.
Для начала достаточно будет осознать, что операция изменения количества товаров в корзине – она нужна не только для того, чтоб просто поменять число на странице, но и само количество товаров в сессии нужно тоже изменить, сохранить результат изменения количества товаров в сессии.
А ты просто циферку меняешь на странице – а в сессии количество товаров остаётся прежним, без изменений.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CMS для интернет магазина ssdm WordPress и другие CMS 20 05.01.2017 01:41
Cms для интернет магазина Pavel1234567 WordPress и другие CMS 15 31.07.2016 14:45
Движок для интернет-магазина zhiharka WordPress и другие CMS 3 01.06.2016 19:32
Движок для интернет-магазина Batmydeath WordPress и другие CMS 1 29.09.2014 13:55
Функции корзины для интернет-магазина Фибер Оптик PHP 2 02.03.2012 12:43