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


Автор: Rusman 20.1.2009, 10:35
Здравствуйте!

Хотелось бы вас попросить посоветовать мне как лучше сделать.
Я сделал инет магазин. Но не предусматрел 1 момент, при нажатии кнопки в корзину - в корзину добавлчяется данные о цене и товаре, но забыл сделать чтоб можно было выбрать количество товаров.
Ссылка на доавбление следующая (к приеру):
 
Код

1ig/addcart.php?price=19&idprod=38&idshop=6
 

Я хочу сделать так чтоб при нажатии на корзину дополнилось к этой ссылке еще &count=ЧИСЛО

Но сделать хочу так: нажимаем на корзину и выходит окно с вводом поля (думаю какое нибдь с помощью java script  (как сделать не знаю)), туда пишем кол-во товара и далее надимаем ОК и к скрипту add.php уже приходит ссылка 1ig/addcart.php?price=19&idprod=38&idshop=6&count=ЧИСЛО

Заранее большое спасибо!

Автор: bars80080 20.1.2009, 11:16
много не понятного. корзина держится на сессиях, так понимаю. как она выглядит в реале?
как оно обычно реализовывается? сверху болтается что-то типа рисунка корзины и обычно отображается общая сумма набранных товаров. жмём на неё и открывается слой скажем с таблицей. каждая строчка товар - его цена, количество, сумма и кнопка удаляющая товар из корзины. остаётся вместо циферок количества поставить тесктовое поле input, в котором можно было бы изменить количество, а внизу кнопку - "сохранить изменения". сама корзина - получается в форме

если у тебя какая-то другая реализация - опиши полнее

Автор: boombick 20.1.2009, 11:26
Имеет место быть момент удобства использования..
При просмотре магазина пользователь просто отмечает нужные ему товары, а уж количество, равно как и способ оплаты и доставке лучше определять при оформлении заказа. ИМХО, конечно же

Автор: Rusman 21.1.2009, 12:13
Объесняю подробнее. Вот есть страница с товаром. На ней указаны несколь цен одного и того же товара. К каждой цене присваивается ссылка вида:
Код

сайт/addcart.php?price=ЦЕНА&idprod=1&idshop=НОМЕР


В данный момент у меня просто при нажатии на цену отправляются данные на addcart она обрабатывает и заносит в корзину.
И я когда это делал совсем забыл про кол-во товара.
Ща хоче подделать. Хочу сделать так чтоб при нажатии на цену выходило окно какое нибудь, далее в это окошке написано: Введите количество товара. Вводим нажимаем ОК. Окно закрывается и данные передаются уже передаются в основном окне вида:
Код

сайт/addcart.php?price=ЦЕНА&idprod=1&idshop=НОМЕР&count=ЧИСЛО

Автор: ksnk 21.1.2009, 12:30
Цитата

На ней указаны несколь цен одного и того же товара

O! smile 

К каждой цене присобачивается input для ввода количества. При клике JavaScript'ом ищем этот инпут и модифицируем ссылку. Лучше посылать такие ссылки Ajax'ом. Меньше плохих слов юзер скажет, когда будет скроллировать список товаров опять на нужную позицию. Вот только нужно побеспокоиться об изменени записи о корзине на этой страничке...



Автор: Rusman 21.1.2009, 12:34
Цитата(ksnk @  21.1.2009,  12:30 Найти цитируемый пост)
К каждой цене присобачивается input для ввода количества. При клике JavaScript'ом ищем этот инпут и модифицируем ссылку. Лучше посылать такие ссылки Ajax'ом. Меньше плохих слов юзер скажет, когда будет скроллировать список товаров опять на нужную позицию. Вот только нужно побеспокоиться об изменени записи о корзине на этой страничке...


Не подскажете как именно это реализовать?  smile 

Автор: ksnk 21.1.2009, 13:07
Rusman, Ajax - слишком длинное слово, чтобы проговаривать его с самого начала. На jQuery такое может выглядеть примерно вот так
Код

<a href="сайт/addcart.php?price=12345&idprod=1&idshop=5467" class="ajax">Супер пупер товар</a>
<input type="text"> <!-- скока вешать граммов -->

Принципиальным моментом вяляется то, что инпут располагается после ссылки в том-же блоке, так как этот момент используется далее.
Код

$(function(){
  $('.ajax').click(function(){
     var val=$(this).next('input').val()||1; // вот в этом месте используется
     this.href=this.href.replace(/&count=\d*?/,'')+('&count='+val);
  })
})


В принципе, на этом можно бы и остановиться, но если нужен Ajax, то примерно так

Код

$(function(){
  $('.ajax').click(function(){
     var val=$(this).next('input').val()||1; // вот в этом месте используется
     $.post(this.href.replace(/&count=\d*?/,'')+('&count='+val),function(data){

    // тут из полученных с сервера данных нужно бы выковырять новый текст для корзинки...
         $('#basket').html(data.basket)

     });
     return false; // обязательно, чтобы перехода не было
  })
})


Добавлено @ 13:09
Писано на коленке, в регулярке , возможно, проврался... :-(

Автор: Rusman 21.1.2009, 13:35
ksnk, большое  спасибо проверю щас )

Автор: bars80080 21.1.2009, 14:51
ksnk, а не проще:

Код

<script>
function setcol(x) {
    var per = prompt('сколько?','1');
    window.location = x + '&count=' + per;
}
</script>
<a href="javascript:void(0);" onclick="setcol('сайт/addcart.php?price=ЦЕНА&idprod=1&idshop=НОМЕР'); return false;">выбрать</a>
?

Добавлено через 2 минуты и 20 секунд
причём даже лучше усовершенствовать

Код

<script>
function setcol(A,B,C) {
    var per = prompt('сколько?','1');
    window.location = 'сайт/addcart.php?price=' + A + '&idprod=' + B + '&idshop=' + C + '&count=' + per;
}
</script>
<a href="javascript:void(0);" onclick="setcol(ЦЕНА,1,НОМЕР); return false;">выбрать</a>

Автор: ksnk 21.1.2009, 15:27
bars80080, Неее! Только не prompt, иначе IE7-й будет допытываться каждый раз - "а вот с этой странички какие-то гады хотят спросить какую-то очередную фигню..., разрешить им или послать.?". Так и юзера потерять недолго.

К тому-же обязывать юзера вводить что-то - не очень корректно.

Еще мысль... А достаточно ли умно выводить ссылками "добавить в корзину"? Если представить себе, что какой-то поисковик решил такую страничку проиндексировать, то так и не долго и моск паламать... сервер уронить...

Автор: bars80080 21.1.2009, 16:14
Цитата(ksnk @  21.1.2009,  14:27 Найти цитируемый пост)
Только не prompt, иначе IE7-й будет допытываться каждый раз - "а вот с этой странички какие-то гады хотят спросить какую-то очередную фигню..., разрешить им или послать.?". Так и юзера потерять недолго.

ну, не знаю, никогда не замечал. но альтернативную форму сделать не сложно

а на счёт того, как лучше, то это уже отдельный вопрос и имхо, решать его лучше на js целиком. 
в моём варианте ссылки не обладают самой ссылкой

Автор: ksnk 21.1.2009, 16:41
bars80080, 
Цитата

ну, не знаю, никогда не замечал

Да ну? Нужно просто вернуть опции IE для интернета в дефолтное значение
option ->Security->interner поставить medium-high, как оно по умолчанию настроено...
Сразу отучает от использования промптов  smile 


Автор: bars80080 21.1.2009, 18:44
ну, он у меня по дефолту вообще на всё ругался, даже на обычные скрипты

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