Показать сообщение отдельно
  #8 (permalink)  
Старый 18.01.2019, 17:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А причем тут РНР код с суммированием и помещения суммы в атрибут? Или вы вопрос корректно задать не можете или не понимаете что нужно.

У вас может быть и не 3 столбца, это никак не изменит сути задачи клиентского кода добавления товара, если это решается исключительно клиентом. Но есть одно НО.

Интернет магазины можно разделить на три категории: шабашники - им главное чтобы заказали, а есть ли у них заказанное на момент заказа, это не важно, далее вопросы буду решаться сугубо "зуб даю, достану"; челночники/базарники - практически что и первое, но с большей ответственностью перед покупателями; полноценный магазин - этот магазин отличается от всех иных обязательным учетом товара (наличие на складе, реализация, порча, списание и т.д.). Исходя из категории магазина рассмотрим два возможных сценария добавления товара.

1) Магазин "неполноценный", возможные форс-мажорные ситуации между продавец-покупатель скрипта никак не касаются, его обязали, он и считает. То есть все делается на клиенте. Но все делать на клиенте, это не значит вывалить ему все в непотребном для обработке виде. Конечно можно достать из колонки 2 цену товара и умножить ее на выбранное количество. Но в данном случае обрабатываются события нажатия кнопок + и -, а значит цена товара в колонке 2 должна выполнять чисто информативную роль и к расчетам не иметь отношения. Выгоднее цену получать из элемента, который вызвал событие, которое и обрабатывается скриптом.

То есть, при запросе страницы сервер формируя html код страницы товаров помещает цену в атрибуты элементов + и -. Я не изучаю ваш код, как обрабатываются эти кнопки не важно, скажу лишь, что совсем не обязательно проверять, что кнопка "минус" или "плюс", можно просто оперировать числами. А это поступить так:

а) html код кнопки "+" - <tag_name data-count="1" data-price="<?=$price?>">+</tag_name>
б) html код кнопки "-" - <tag_name data-count="-1" data-price="-<?=$price?>">-</tag_name>

Как видно из кода, кнопки в атрибутах будут иметь одинаковые значения, но с разными знаками, это количество и вставляемая в атрибуты РНР выводом цена товара, которая также выводится и в колонку 2 для информации и с единицами - "руб."

Обработчик нажатия этих кнопок должен извлекать из data-count значение, суммировать его с количеством набранных, а значение цены из data-price суммировать с суммой набранного. То есть здесь не будет умножения.

Можно поступить иначе. Если количество набранного (колонка 2) сделать полем ввода без возможности ручного ввода в него, то цену за товар можно вставить только в его атрибут. На это поле повесить событие обрабатывающее ввод, в котором из атрибута поля извлекается цена за товар и умножается на количество набранного, а результат пишется в сумму (колонка 3).

2) Полноценный магазин. В этом случае товар либо не может быть добавлен если его нет, и сообщается об этом, возможно с указанием срока когда он будет, либо товар добавляется, но заказ будет обслуживаться по мере поступления товара. Либо, товар есть, но каждое добавление товара, это не JS расчет, а запрос на сервер, где проверяется его наличие на складе, и пользователю уже дается расчет за набранное количество, либо отказ. В этом случае выражение $summ_of+=$zamowienie[$id]*$cat['price']; имеет право на существование как ответ сервера на запрос клиента, но никак как вставка в атрибут элемента.

Последний раз редактировалось laimas, 18.01.2019 в 18:40.
Ответить с цитированием