Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 6 / 0
Регистрация: 10.04.2016
Сообщений: 66

Логика для корзины интернет-магазина

24.04.2016, 02:40. Показов 3399. Ответов 22

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые знатоки. Подскажите пожалуйста, как по вашему лучше реализовать идею? Есть ИМ, где необходимо, чтобы товар имел свойства, такие как размеры, тип управления и т.п. Т.е. есть материал со стоимостью погонного метра и свойства изделия, которые будет выбирать пользователь. Вот пример: Рулонная штора, цена за погонный метр 4000 р, id в базе 25, клиент выбрал свойства : Ширина: 504 мм, Высота:1297 мм, Управление: слева, Высота управления: 1296 мм. В типовых ИМ корзина реализована таки образом, при нажатии кнопки купить = создается сессия и в сессию летит массив (id=>amount) т.е. идентификатором выступает id. У меня же товар с любым отличным свойством = по сути новый товар, поэтому если изменился хоть один из параметров, например высоту поменяли на 1400 мм, то в корзину должен улететь еще один товар. Что в данном случае использовать в качестве уникального идентификатора? Я думаю использовать хэширование для всех свойств, т.е. переводить в md5 и использовать его в качестве ключа для пары (md5 ключ=> amount). Как вы думаете на счет этого? Или тупо лепить стринг из свойств в качестве ключа? Слишком длинно выходит... Главное что далее будет сравнение = если добавили в корзину товар с таким же идентификатором, значит идет увеличение колличества (amount), если же идентификатор другой = добавляем новый товар.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.04.2016, 02:40
Ответы с готовыми решениями:

Пример корзины магазина
Я не знаю, может это не сюда вопрос, но... Как сделать корзину на cookies, если идентификация товаров идет по id... Есть...

Парсер для интернет магазина
Здравствуйте! Есть таблица в Excel с товарами. В ней идут стоки, одна за другой в виде: "НАЗВАНИЕ_БРЕНДА НАЗВАНИЕ ТОВАРА"....

Корзина для интернет магазина
Добрый вечер! Нужна помощь При нажатии на кнопку "добавить" на главной странице добавляется товар и выводится на странице корзины. У...

22
Заблокирован
24.04.2016, 03:43
посмотри плагин для wordpress называется yocommerce на wordpress.org/plugins
там очень мало исходного кода, но как раз то что тебе нужно.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
24.04.2016, 11:50
Цитата Сообщение от santaatnas Посмотреть сообщение
У меня же товар с любым отличным свойством = по сути новый товар, поэтому если изменился хоть один из параметров, например высоту поменяли на 1400 мм, то в корзину должен улететь еще один товар.
это неправильно, ведь в самом магазине могут измениться цены и они должны сразу обновляться в корзине
тоже самое и со свойствами, вдруг название поменяется или само св-во
0
0 / 6 / 0
Регистрация: 10.04.2016
Сообщений: 66
24.04.2016, 13:05  [ТС]
полудух, Цены будут меняться только на материал, данные о котором лежат в mysql бд, и при изменении цены на материал, будет меняться цена на изделяе, т.к. из выбранных параметров реализуется коэффициент, который умножается на цену погонного метра и полуачется цена изделия.
0
24.04.2016, 13:06

Не по теме:

Цитата Сообщение от полудух Посмотреть сообщение
в самом магазине могут измениться цены и они должны сразу обновляться в корзине
в магазинах, которые я делал в тз было наоборот - по какой цене товар попал в корзину, по такой и продавать

0
0 / 6 / 0
Регистрация: 10.04.2016
Сообщений: 66
24.04.2016, 13:12  [ТС]
Jewbacabra, Да это действительно так, тем более, сессия с товарами в корзине хранится только до момента оформления заказа, а уж после заказа - вообще ничего не должно меняться.

Добавлено через 4 минуты
poss, Посмотрел там исходники, а именно yocommerce_widget_class и ничего схожего с моим тз не увидел.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
24.04.2016, 13:23
Цитата Сообщение от Jewbacabra Посмотреть сообщение
в магазинах, которые я делал в тз было наоборот - по какой цене товар попал в корзину, по такой и продавать
ну это либо от жадности, либо от глупости заказчика
в нормальных магазинах цена в корзине меняется от курса $, например, чуть ли не в тот же день
0
24.04.2016, 13:30

Не по теме:

Цитата Сообщение от полудух Посмотреть сообщение
цена в корзине меняется от курса $
Магмзины работают в штатах, так что цены и так в $. А неизменяемая цена - требование местных законов. Так что не надо заказчиков обвинять полностью не разобравшись, а уж дело программиста - сделать как было обговорено. К тому же цены меняются редко и не значительно, и гораздо важнее получить довольного клиента, продав ему по старой цене, чем возможно не продав вовсе

0
0 / 6 / 0
Регистрация: 10.04.2016
Сообщений: 66
24.04.2016, 13:33  [ТС]
полудух, Естественно, что при изменении курса доллара, это приведет у изменению цены в рублях и к изменению цены изделия, есть класс currency, который за все отвечает, и даже если вы положили в корзину, а потом поменялся курс, то при следующем обновлении корзины или при следующем этапе оформления- цена поменяется,.т.к. Total price+= item_price*amount*currency.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
24.04.2016, 13:35
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Магмзины работают в штатах, так что цены и так в $. А неизменяемая цена - требование местных законов. Так что не надо заказчиков обвинять полностью не разобравшись, а уж дело программиста - сделать как было обговорено
да не в $ дело
в законе штата прописано про цены в корзине?
а что у них там насчёт времени?
я могу наложить в корзину и вернуться через год, а если там что-то изменилось, магазин накроют?

Добавлено через 1 минуту
Цитата Сообщение от santaatnas Посмотреть сообщение
полудух, Естественно, что при изменении курса доллара, это приведет у изменению цены в рублях и к изменению цены изделия, есть класс currency, который за все отвечает, и даже если вы положили в корзину, а потом поменялся курс, то при следующем обновлении корзины или при следующем этапе оформления- цена поменяется,.т.к. Total price+= item_price*amount*currency.
тут основная мысль не в цене, а в свойствах
цена сама по себе обычно
я к тому, что всё должно быть актуально
0
0 / 6 / 0
Регистрация: 10.04.2016
Сообщений: 66
24.04.2016, 13:35  [ТС]
полудух, Для этого есть время сессии, никто ее год не будет хранить.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
24.04.2016, 13:36
Цитата Сообщение от santaatnas Посмотреть сообщение
полудух, Для этого есть время сессии, никто ее год не будет хранить.
причём тут сессии
читайте, о чём речь вообще
0
24.04.2016, 13:39

Не по теме:

Цитата Сообщение от полудух Посмотреть сообщение
а что у них там насчёт времени?
я могу наложить в корзину и вернуться через год?
месяц жива корзина. Месяц прошел - все.
Цитата Сообщение от полудух Посмотреть сообщение
в законе штата прописано про цены в корзине?
Не совсем. Я не знаток юридических вопросов - поэтому как я понял: добавив в корзину товар ты заключил с магазином договор и меняться он просто так не может. При этом ты не обязан сразу оплатить - на это дается определенное время.

Еще если ты добавил товар в корзину и не купил в течении некоторого времени - тебе еще и скидку предложат.

0
67 / 60 / 25
Регистрация: 05.05.2009
Сообщений: 131
24.04.2016, 13:41
Не обязательно делать md5, можно просто составить ключ из значений параметров в определённом порядке.
Если параметров нет, то ключом будет просто id материала или товара.
Например так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$_SESSION['backet'] = [
    //  На широкую центральную часть окна
    '112-504-1297-left' => [
        'id' => 112,
        'width' => 504,
        'height' => 1297,
        'control' => 'left',
        'amount' => 1,
    ],
    //  На узкие боковые части окна
    '112-348-1297-right' => [
        'id' => 112,
        'width' => 348,
        'height' => 1297,
        'control' => 'right',
        'amount' => 2,
    ],
    //  Декоративные грузики для цепочек
    '71' => [
        'id' => 71,
        'amount' => 3,
    ]
];
0
0 / 6 / 0
Регистрация: 10.04.2016
Сообщений: 66
24.04.2016, 13:45  [ТС]
полудух, я хорошо читаю, вы сказали, что будет, если я наложу в корзину товара и вернусь через год, а ничего не будет, вы не увидите вашей корзины, т.к. товары в корзине храниться в сессии, session_start() и выставляете время жизни сессии, час или 10 часов или до закрытия браузера, никто на сервере не будет хранить сессию год. На моём сайте реализовано сохранение сессии, до закрытии браузера. И даже если вы день не закрывали браузер, а потом решил оформить заказ, то при добавлении заказа из корзины(сессии) в БД, идет проверка курса доллара.

Добавлено через 3 минуты
Darevill, ну собственно, об этом я и спрашивал...т.е. формируем обычный стринг, в строгом порядке... И при сравнении ключей-если они совпали-увеличиваем amount, в противном случае создаем новый товар.
0
24.04.2016, 13:46

Не по теме:

Цитата Сообщение от Jewbacabra Посмотреть сообщение
месяц жива корзина. Месяц прошел - все.
Цитата Сообщение от полудух Посмотреть сообщение
в законе штата прописано про цены в корзине?
Не совсем. Я не знаток юридических вопросов - поэтому как я понял: добавив в корзину товар ты заключил с магазином договор и меняться он просто так не может. При этом ты не обязан сразу оплатить - на это дается определенное время.
Еще если ты добавил товар в корзину и не купил в течении некоторого времени - тебе еще и скидку предложат.
в общем весёлый штат
я бы на всякий случай поставил сервер в нормальном штате
если конечно они не привязываются к штату клиента, что обычно нонсенс

0
0 / 6 / 0
Регистрация: 10.04.2016
Сообщений: 66
24.04.2016, 13:51  [ТС]
полудух, возможно вы тоже своей невнимательно сть кого-то раздрожаете, я вам выше написал ответ на ваш выпад по поводу хранения сессии в год, прочитайте и попробуйте аргументированно ответить.
0
67 / 60 / 25
Регистрация: 05.05.2009
Сообщений: 131
24.04.2016, 13:52
Лучший ответ Сообщение было отмечено santaatnas как решение

Решение

Логично - у вас не штучный товар, потому ключи в виде id не подойдут, нужно по сути формировать товар на лету исходя из потребностей клиента и в качестве ключа придётся использовать перечисление этих потребностей.
Если вдруг клиент решил поменять размеры - это значит, что ему надо сформировать другой товар, а предыдущий из корзины удалить. Либо вообще не давать возможности редактировать товар в корзине (только количество), а если надо другую конфигурацию - пусть клиент составит её заново, а старую удалит.
1
0 / 6 / 0
Регистрация: 10.04.2016
Сообщений: 66
24.04.2016, 14:06  [ТС]
Darevill, спасибо вам за идею.

Добавлено через 9 минут
полудух, слился, накалякал отрицательный отзыв и не может его даже аргументировать, странные люди нынче пошли, ну да ладно, вы мне в предыдущем посте помагали, за что вам огромное спасибо. Поставлю вам еще плюсик при возможности.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
24.04.2016, 14:09
Цитата Сообщение от santaatnas Посмотреть сообщение
полудух, слился, накалякал отрицательный отзыв и не может его даже аргументировать, странные люди нынче пошли, ну да ладно, вы мне в предыдущем посте помагали, за что вам огромное спасибо. Поставлю вам еще плюсик при возможности.
дорогой реподрочер, когда подрастёте, то откроете для себя печальную истину - вам в этом мире никто ничего не должен
и обычно людям насрать на ваши переживания
и чем раньше, тем лучше
но сначала, научитесь читать уже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2016, 14:09
Помогаю со студенческими работами здесь

Поиск для интернет-магазина
Не могу понять в чём проблема. Делаю поиск для интернет магазина. Форма поиска находиться в шапке сайта поэтому SearchController...

Написание ПП для интернет магазина
У меня задача такая: Человек заходит по ссылке sajt.ru/id/ Далее id записывается в куки: $partner_id = trim($_SERVER,'/'); ...

Создание админки для интернет-магазина
Привет. Итак пишу интернет - магазин. БД на MySQL сделана. Некоторую информацыю занес в БД. Так как пишу интернет-магазин с нуля и опыта...

Нужна корзина для интернет-магазина, на заказ
Нужна корзина для этого магазина www.shop.n-volna.ru

Нужен партнёр для разработки интернет-магазина
Здравствуйте форумчане! Я хочу написать движок магазина и частично уже начал разработку, но мои познания в php очень незначительны да и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru