скрипт кнопки купить
<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 для сессий
Спустя 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 это кол-во а выглядит он примерно так
Всё это добро и есть корзина, сохраняешь этот массив еще и в куки, и делаешь проверку, если нету сессии то вывести содрежимое из куков, и наоборот.
neadekvat
Немного не понял тебя =) а так нашел что-то похожее на session.use_cookie = 1
Ну в БД это конечно хорошо, а прикинь народу уйма? думаю с сессиями легче будет работаться чем с БД, но в БД тоже есть плюсы...
Ну смотри, по идее как должен состоять нормальный массив корзины, если на сессиях
$_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'е аяксом не пользовался пока, но думаю проблема в том что когда ты только отправил данные, ты обновляешь корзину, а товар ещё не успел добавится.
хотя хз )
Сам на чистом 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. Единственное, для чего может понадобиться ответ от сервера - узнать, есть ли еще товар в наличии. Но у вас такой задачи, кажется, нет
А я предлагаю делать это средствами 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 написал(а):
аааа, мозги кипят, может подскажите, как делать?всмысле как должно быть!