Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Не могу разобраться с корзиной...


Автор: kulikoff 13.12.2007, 23:10
Помогите реализовать корзину для Интерне-магазина. Мож, посоветуйте, как лучше. Я пока думаю, что делать буду через сессиию. Добавление в корзину товара будет осуществляться таким способом:
Код

if (isset($_SESSION['cart'][$good_id])) {
    $name='q'.$good_id;
    $_SESSION['cart'][$good_id]=$_SESSION['cart'][$good_id]+$_POST[$name];
} else {
$name='q'.$good_id;
    $_SESSION['cart'][$good_id]=$_POST[$name];
}

Массив товаров в корзине реализуется, как двумерный массив, где второй индекс есть ид товара. Значением ключа есть количество выбранного товара. В этом коде проверяется, если ключ уже есть в массиве, то его значение увеличивается на кол-во заказанных единиц товара, если нет - то просто создаем его и присваиваем значение, полученное из формы о кол-ве заказанного товара.
Теперь у меня появилась проблема - как вывести содержимое этого массива? ведь я ж не знаю имя второго ключа в массиве. Подскажите. плиз!

Автор: Feldmarschall 13.12.2007, 23:14
Грамотно организована корзина. Не часто встретишь такой правильный подход. Непонятно только, зачем там буква "q".
А выводить - просто: $_SESSION['cart'] - это массив. Массив обычно выводят перебором. foreach

Добавлено через 1 минуту и 57 секунд
Стоп. А откуда берется это $good_id? там выше этого кода идет перебор массива $_POST в цикле?

Автор: kulikoff 13.12.2007, 23:29
В каталоге возле каждого товара сделана форма, куда вводиться кол-во заказанных единиц товара и в кнопке - обработчике (по факту - картинка. которая вызывает обработчик формы - "добавитель" в корзину,который приведен выше). Так вот там заодно и передается код товара и кол-ва. Код - методом GET $good_id и кол-во переменной $_POST[$name]
И можно помочь кодом, как использовать функцию foreach? Пробовал использовать её, но не получается что-то...

Автор: Feldmarschall 13.12.2007, 23:34
если код передается в адресной строке (а не методом GET, конечно, поскольку метод у тебя POST), то тогда это будет не $good_id, а $_GET['good_id']

А напиши - что у тебя не получилось? Я поправлю. А то неблагодарная какая-то это работа - писать. Вот так пишешь, пишешь человеку, а он вдруг как ляпнет: "мне не это нужно было совсем!". Или вообще не увидел, стал делать по-своему.

Какие там сложности? У тебя есть массив $_SESSION['cart']. подставляешь его первым операндом в foreach. запись делаешь расширенную, ту, что с =>
пример есть в мануале. Там его писали люди гораздо более продвинутые, чем я. Почему бы у них не взять?

Автор: kulikoff 13.12.2007, 23:53
Спасибо большое! Осенило, что там и к чему. Как я сам не смог понять, как работать с этой функцией? Аж стыдно...
Код

foreach ($_SESSION['cart'] as $good_id => $qty) {
        echo("<br>$good_id");
        echo("$qty");
    }

Всё просто и понятно. ещё раз спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)