[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Корзина на кукис
nugle
Написал корзинку на кукис и аякс, возникла проблемка при клике на кнопку купить, первый раз товар не добавляется, а если кликать дальше то всё успешно добавляется, можно посмотреть тут, почему так происходит?

скрипт кнопки купить

<img onclick = 'getRequest(".$row2['id'].");' class= 'but_img' style='float:right; margin-top: 25px; cursor:pointer;'  src='купить.jpg' width='176' height='62' alt='Купить' />


скрипт аякс

function getRequest(id){

url = "proc_cart.php?id=" + id;
req.open("GET",url,true);
req.onreadystatechange = Refresh;
req.send(null);

}

function Refresh()
{
var a = req.readyState;

if( a == 4 )
{
var b = req.responseText;
document.getElementById('ajax').innerHTML = b;

}
}


и скрипт обработчика


<?php
require "options/db.php";

$id = $_GET['id'];

setcookie("cart[$id][quantity]", $_COOKIE['cart'][$id]['quantity']+1, time()+1800);
print_r($_COOKIE['cart'][$id]['quantity']);



?>

<h3>Ваша корзина</h3>
<?php

$sql = "select * from articles where id in(";
foreach($_COOKIE['cart'] as $id=>$value){
$sql.= $id.",";
}
$sql = substr($sql, 0,-1).") order by name asc";
$result =mysql_query($sql) or die(mysql_error() ."<br />". $sql);
while($row = mysql_fetch_assoc($result)){
$summa += $row['price'] * $_COOKIE['cart'][$row['id']]['quantity'];

?>
<?php
echo $row['articul']?> x <?php echo $_COOKIE['cart'][$row['id']]['quantity']?><br />
<?php }?>
<hr />
Общая цена:<br /> <?php echo $summa?> руб.<br />
<
a class='a_href_basket' href="cart.php">Просмотр корзины</a>






Спустя 1 час, 27 минут, 24 секунды (22.03.2011 - 19:30) sharki написал(а):
nugle
Чёт ты фигню творишь со своим магазом, я вот например отключил куки и что ты будешь делать? =) ничего не запишется и не купиться, делай всё на сессиях, а например корзину сохраняй как и в сессиях так и куках, чтобы пользователь смог просмотреть свою корзину после закрытия браузера. А так бред выходит.

Спустя 11 минут, 59 секунд (22.03.2011 - 19:42) nugle написал(а):
Часа. Блин. У всех же спрашивал как лучше?как он просмотрит если я буду выводить сессиями?

Спустя 55 минут, 14 секунд (22.03.2011 - 20:38) sharki написал(а):
nugle
Всмысле посмотрти если ты будешь выводить сессиями? вообще не понял =)

Спустя 2 минуты, 3 секунды (22.03.2011 - 20:40) neadekvat написал(а):
sharki, для интереса, кстати, глянь в php.ini - многие переходят на use cookie only для сессий smile.gif

Спустя 7 минут, 28 секунд (22.03.2011 - 20:47) nugle написал(а):
sharki
Как сможет пользователь просматривать корзину после закрытия браузера, если корзина будет выводиться с помощью сессий?

Спустя 2 минуты, 54 секунды (22.03.2011 - 20:50) neadekvat написал(а):
nugle, я бы посоветовал в кукисах хранить какой-нибудь идентификатор, а выбранные товары - в базе.
А заказы, которые валяются больше недели/месяца удалять.

Спустя 9 минут, 2 секунды (22.03.2011 - 20:59) sharki написал(а):
nugle
Ну смотри, по идее как должен состоять нормальный массив корзины, если на сессиях

$_SESSION['id']['cnt'] т.е id это id товара, а cnt это кол-во а выглядит он примерно так

array (
1 => 10, // товар №1 10 штук
43 => 2, // товар №43 2 штуки
5 => 4 // товар №5 4 штуки
);


Всё это добро и есть корзина, сохраняешь этот массив еще и в куки, и делаешь проверку, если нету сессии то вывести содрежимое из куков, и наоборот.


neadekvat
Немного не понял тебя =) а так нашел что-то похожее на session.use_cookie = 1


Ну в БД это конечно хорошо, а прикинь народу уйма? думаю с сессиями легче будет работаться чем с БД, но в БД тоже есть плюсы...

Спустя 5 минут, 31 секунда (22.03.2011 - 21:05) nugle написал(а):
sharki, да на сессиях у меня уже было, пределал на куки, теперь совмещать!спасибо

Спустя 19 секунд (22.03.2011 - 21:05) neadekvat написал(а):
Цитата (sharki @ 22.03.2011 - 20:59)
Немного не понял тебя =) а так нашел что-то похожее на session.use_cookie = 1

Это не то. Это типа разрешение использовать кукисы для хранения идентификатора сессии. Я про другую директиву:
session.use_only_cookies = 1

Это типа приказ использовать только кукисы.
У меня в php 5.3 по умолчанию стоит именно таким образом.

Цитата (sharki @ 22.03.2011 - 20:59)
Ну в БД это конечно хорошо, а прикинь народу уйма? думаю с сессиями легче будет работаться чем с БД

Да прям? Информации на сервере будет не меньше. Вот только в случаи с БД эта информация практически полностью подчиняется программисту, а в случаи с сессией - нет.
В реализации разница будет в пару запросов к бд.

Спустя 2 минуты, 13 секунд (22.03.2011 - 21:07) fallow написал(а):
Товар у тебя добавляется. Попробуй нажать на купить и обновить страницу.
Сам на чистом JavaScript'е аяксом не пользовался пока, но думаю проблема в том что когда ты только отправил данные, ты обновляешь корзину, а товар ещё не успел добавится.
хотя хз )

Спустя 2 минуты, 30 секунд (22.03.2011 - 21:10) sharki написал(а):
neadekvat
Тоже верно

Спустя 45 секунд (22.03.2011 - 21:10) Ser18 написал(а):
Если вы один раз нажмете купить и перезагрузите страницу то все появится

Кука создается при загрузке страницы, но ее не видно, видно будет только если второй раз перезагрузить страницу

Спустя 2 минуты, 28 секунд (22.03.2011 - 21:13) Ser18 написал(а):
Записывайте в куки каждому пользователю индивидуальный ид, а его покупки храните в БД

Спустя 2 минуты, 10 секунд (22.03.2011 - 21:15) fallow написал(а):
Ser18
А если перезагрузить до вывода обработчик? Или не катит?

Спустя 1 минута, 33 секунды (22.03.2011 - 21:17) nugle написал(а):
fallow
это то я знаю, но это же после обновления, а надо без него!

Спустя 22 секунды (22.03.2011 - 21:17) neadekvat написал(а):
nugle, кстати, по реализации - почему именно такая схема? Почему бы не обновлять информацию о корзине на основе инфы, которая есть на странице, а не на основе ответов сервера?

Спустя 40 секунд (22.03.2011 - 21:18) Ser18 написал(а):
Попробуйте сделать простой скрипт

Создаете куку

Выводите на экран куку


Спустя 1 минута, 43 секунды (22.03.2011 - 21:19) fallow написал(а):
И мой пример за одно попробуй реализовать, может получится)

Спустя 1 минута, 34 секунды (22.03.2011 - 21:21) Ser18 написал(а):
Можно javascript-том куки вытащить

Спустя 14 минут, 57 секунд (22.03.2011 - 21:36) nugle написал(а):
neadekvat
не совсем понял вашу мысль!

Спустя 3 минуты, 40 секунд (22.03.2011 - 21:40) neadekvat написал(а):
Вы обновляете информацию о корзине на основе ответа от сервера.
А я предлагаю делать это средствами js. Единственное, для чего может понадобиться ответ от сервера - узнать, есть ли еще товар в наличии. Но у вас такой задачи, кажется, нет

Спустя 20 минут, 25 секунд (22.03.2011 - 22:00) nugle написал(а):
как это средствами js?обновим и нет ничего

Спустя 3 минуты, 8 секунд (22.03.2011 - 22:03) Ser18 написал(а):
javascript-ом добавил куку, а потом показал на странице

Спустя 5 минут, 54 секунды (22.03.2011 - 22:09) nugle написал(а):
а как добавить?

Спустя 3 минуты, 13 секунд (22.03.2011 - 22:12) Ser18 написал(а):
Почитайте где нибудь

Заодно получше разберетесь

Спустя 3 минуты, 14 секунд (22.03.2011 - 22:15) nugle написал(а):
аааа, мозги кипят, может подскажите, как делать?всмысле как должно быть!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.