|
|
|
|
|
для: arhat78
(01.08.2014 в 18:01)
| | Учиться надо было не на магазине, а на чем либо попроще. Магазин, это все-таки специфика, и решать придется много вопросов, и с нулевыми знаниями вряд ли что-то путнее можно сделать.
Мало мальски хороший магазин не может обойтись без Javascript, а для удобства покупателей желательно задействовать Ajax. А задействуя последнее, желательно продумать удобный для клиентских скриптов html-код, а он в свою очередь определяется как раз тем, что вы вкладываете в магазин - задачи, товары, их специфика, и т.д, и т.п.. | |
|
|
|
|
|
|
|
для: confirm
(01.08.2014 в 17:58)
| | confirm, ну вы же так не серчайте на меня! Я же только учусь )))))) И благодарю за советы и указания - я верю, что вы плохого не посоветуете. | |
|
|
|
|
|
|
|
для: arhat78
(01.08.2014 в 17:26)
| | Вы в реальном магазине когда либо были или нет? Вроде бы как уже говорили об этом - заставлять покупателя покупать мелочь по 1-й единице, ну это свинство как минимум.
В примере сделано ровно так, как вы и хотите - надо добавить в корзину, значит "пуляете" покупателя на какую-то голую страницу. Заказали, значит страница товаров будет отображать что товар в корзине и сколько его.
Но а надо ли вообще так, и удобно ли это? Нет конечно, и необходимости пулять покупателя куда-то для добавления совсем не требуется. Можно заказывать товары прямо на странице товаров, можно на любой другой странице где выводится товар. И для того чтобы отредактировать уже набранный, или еще добавить какой либо, тоже совсем не обязательно заходить в корзину. Для этого достаточно выводить не сообщение-ссылку "В корзине 1", а "В корзине" и далее поле ввода с количеством набранного, которое можно прямо на странице изменить, и эти изменения будет отображены в корзине. Можно и удалять.
В общем чем больше сервиса, тем лучше. Вы же наоборот не о сервисе думаете, а как выгодно вам, а вам выгодно то, что совсем неудобно будет для покупателей.
Мне в общем то все равно, как хотите, так и делайте. На главный вопрос ваш я дал ответ - это пример хранения набора товара с разными характеристиками в корзине, и как такой набор можно добавлять в нее. | |
|
|
|
|
|
|
|
для: confirm
(01.08.2014 в 17:39)
| | У меня страница корзины и страница заказа - идентичны. Разве что на странице заказа уже нельзя менять количество....
Буду разбирать в уме новую для меня конструкцию корзины. | |
|
|
|
|
|
|
|
для: arhat78
(01.08.2014 в 17:28)
| | Вы странно подходите к структуре как корзины так и ее представления.
Не проблема написать и такую таблицу как вы написали, но в данном случае форма будет иная.
У вас один товар, а все остальное это его характеристики, так зачем их разбрасывать по форме?
А вот хранение товаров корзины в заказе, это уже будет именно построчно, собственно об этом я уже писал. | |
|
|
|
|
|
|
|
для: confirm
(01.08.2014 в 17:22)
| | Да? А я себе по другому вывод корзины представлял........ В каждой новой строчке отображается новый выбор....
Вот именно в таком виде код и выводится - то есть не работает. На выходных будет больше времени, попробую его по страницам и функциям разложить | |
|
|
|
|
|
|
|
для: confirm
(31.07.2014 в 15:02)
| | confirm, а может быть можно к этому вопросу по другому подойти? Если как-нибудь через проверку наличие данного размера сделать? Допустим в корзине уже лежит ботинок А с размером 21; вот выбираешь и добавляешь ещё один 21й размер: уже есть 21й размер, то прибавлять +1 количество; а вот если выбираешь и добавляешь ботинок А с 22м размером, то просто в корзину в новой строке выводить ботинок А с новым размером...? | |
|
|
|
|
|
|
|
для: arhat78
(01.08.2014 в 17:14)
| | Потому, что эта колонка отображает размер модели и выбранное количество этого размера.
Удалить же из корзины можно либо целиком модель, либо только какой-то размер/размеры модели.
Что написано дальше - ничего не понятно. Что означает "у меня так выводится", а код из примера? | |
|
|
|
|
|
|
|
для: confirm
(31.07.2014 в 15:02)
| | А почему или зачем "Размер/Количество" в одной колонке?
И у меня в основном код выводится на странице магазина в таком виде: "$v) { //из корзины $bsk[$k]['size'] = array_diff_key($bsk[$k]['size'], array_flip($v)); //из редактируемых $ids[$k] = array_diff_key($ids[$k], array_flip($v)); } } } //добавление в корзину и обновление корзины foreach($ids as $k=>$v) { //добавляем товар в корзину if(!$bsk || !array_key_exists($k, $bsk)) $bsk[$k] = array('count'=>array_sum($v), 'price'=>$products[$k]['price'], 'size'=>$v); //изменяем товар в корзине else if(array_key_exists($k, $bsk)) { //изменяем количество по каждому из размеров foreach($v as $m=>$n) $bsk[$k]['size'][$m] = $n; //обновляем общее количество набранного товара $bsk[$k]['count'] = array_sum($bsk[$k]['size']); } } } //массив имитирующий таблицу товаров $products = array( 1 => array('name'=>'Модель 1', 'price'=>980), 2 => array('name'=>'Модель 2', 'price'=>1000), 3 => array('name'=>'Модель 3', 'price'=>1100), 4 => array('name'=>'Модель 4', 'price'=>1200), 5 => array('name'=>'Модель 5', 'price'=>1500), 6 => array('name'=>'Модель 6', 'price'=>850) );" и т.д.
Но буду разбирать; и может быть что-нибудь, да получится ))) | |
|
|
|
|
|
|
|
для: arhat78
(31.07.2014 в 11:05)
| | Это кажется, что сложно, и только возможно потому, что не знаете функций работы с массивами, которые в большем применяются.
Замените в JS коде строку:
this.checked ? p.append('<label>количество: <input type=text name=cnt['+this.name.match(/\d+/)[0]+'] value=1 /></label>') : p.children().last().remove();
|
на
this.checked ? p.append('<label>количество: <input type=text value=1 /></label>') : p.children().last().remove();
//а эти строки
//удалить поля количества при отправке
$('#add').submit(function() {
$(this).find('input:text').remove();
});
//удалите вообще
|
Изначально писалось под иной сценарий и так и осталось.
Что касается корзины и вашего вопроса "как", то ответ заключается в организации корзины, в функции подсчета ее основных параметров total_basket(), функции собственно работающей с корзиной set_basket: добавление, изменение, удаление.
Массивы $products, $size и $shoes_size - это имитаторы таблиц базы данных, для примера, чтобы понятно было сразу что, откуда и зачем.
Далее две конструкции выполняющие по условиям соответствующим (параметру GET запроса) соответственно прием формы добавления товара в корзину и формы редактирования корзины.
Все далее, это вывод товаров, самих форм, что организовано по условиям, чтобы не разбивать пример на несколько страниц как это может быть у вас.
Открывайте руководство РНР по указанным ссылкам, читайте код и о функциях которые в нем применяются. Изучайте их работу, уясняя на простых примерах.
Это что касается кода. А что касается как вам конкретно строить свой код, то я вам уже говорил неоднократно - так как в реальности, описывая свои реальные потребности и действия html структурой и код ее обслуживающий. | |
|
|
|
|