[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Интернет магазин
nugle
Подскажите пожалуйста с помощью чего реализуется интернет магазин, есть сайт на рhр, на нём есть товары, как сделать чтобы при клике добавлялся товар в карзине(я знаю как только с переходом в карзину и, чтобы там товар не сохранялся), как сделать чтобы сохранялся товар в карзине..?Это реализуется, мне кажется, при помощи кукис или сессий.Или может при помощи чего то другого...В гугле не одного скрипта не могу найти для разбора..



Спустя 6 минут, 17 секунд (5.11.2010 - 20:37) inpost написал(а):
nugle
Ты правильно мыслишь! В кукисах хранишь id товара и число товаров. Так формируется корзина. Потом при нажатии: "оформить заказ": все значения добавляешь в БД как реальный заказ, уже, а не временная корзина.

Спустя 15 минут, 48 секунд (5.11.2010 - 20:52) nugle написал(а):
спасибо, буду пробывать

Спустя 2 минуты, 58 секунд (5.11.2010 - 20:55) inpost написал(а):
Добавлю, цену можно тоже хранить в сессии до формирования заказа, когда пользователь нажмет сформировать реальный заказ, тогда цену берёшь из БД и считаешь. С одной стороны люди видят цену без обращения к БД, а с другой стороны, если человек подделает кукисы, то у него в правах будет только цена, но цену при заказе ты будешь формировать заново из БД, как бы небольшая защита.

Спустя 1 минута, 53 секунды (5.11.2010 - 20:57) nugle написал(а):
И тут же вопрос..Как мне осуществить при клике тут же формирование кукис?

Спустя 5 минут, 50 секунд (5.11.2010 - 21:03) inpost написал(а):
Переход на другую страницу, передача GET или POST =)
Есть второй вариант, Аякс =) это если без перезагрузки страницы

Спустя 2 минуты, 46 секунд (5.11.2010 - 21:06) nugle написал(а):
то есть скрытой пременной передавать скрытую переменную при переходе на другую страницу?
А сейчас наверно все на AJAX магазины?

Спустя 12 минут, 55 секунд (5.11.2010 - 21:19) nugle написал(а):
вот пробывал

<?php
if (isset($_GET['price']))
{$_COOKIE['price']=$_GET['price'];}
else
{
$_COOKIE['price']=$_COOKIE['ses'];
}
setcookie ("price",$_COOKIE['price'], time()+8000);
$_GET['ses']=$_GET['price'];
require('blocks/bd.php');
mysql_set_charset('utf8');


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Фиеста-2000</title>
<
link href="style.css" rel="stylesheet" type="text/css" />
</
head>

<
body>
<
table width="960" height="640" cellpadding="0" cellspacing="0">
<
tr> <?php require('blocks/toptd.php'); ?></tr>
<
tr>
<?php require('blocks/lefttd.php'); ?>
<td width="800" align="left" valign="top"><p>Ваш 3ака3</p>
<
p> </p>
<?php

echo $_COOKIE['price'];
?></td>
</
tr>
</
table>
</
body>
</
html>

Но потом 3аходя в кар3ину нет ни каких товаров

Спустя 6 минут, 37 секунд (5.11.2010 - 21:25) Sanchopansa написал(а):
Ну я бы советовал делать корзину не на куксах а в сессии...
Вот тебе такой пример для реализации...


<?php


class EshopCart

{
var $_id = null;
var $_quantity = null;
//конструктор
function __construct()
{
//получаем из среды переменную количества товара
$this->_quantity = (int)$_REQUEST['quantity'];
//получаем из среды переменную ID товара
$this->_id = (int)$_REQUEST['id'];
//стартуем сессию (необходимо для работы с сессиями)
session_start();
}
//метод добавления товара в корзину
function add ()
{
$index = null;
//получаем данные о продукте с переданным ID в виде объекта
$product = $this->getProduct();
//если в корзине есть записи то проверяем на наличие данного продукта в корзине
if (count($_SESSION['eshop']['cart']))
{
foreach ($_SESSION['eshop']['cart'] as $i=>$val)
{
if ($_SESSION['eshop']['cart'][$i]['id'] == $product->id)
{
//если продукт с данным ID найден то в переменную $index записываем индекс этого продукта в массиве корзины
$index = $i;
break;
}
}
}

//если продукт с данным ID небфл найден
if (is_null($index))
{
//создаем массив для описания товара и добавляем в него свойства товара
$cart = array();
$cart['id'] = $product->id;
$cart['name'] = $product->name;
$cart['category'] = $product->cat_id;
$cart['price'] = $product->price;
$cart['currency'] = $product->currency->label;
$cart['quantity'] = $this->_quantity;
//записываем в массив корзины в сессии наш новый товар
$_SESSION['eshop']['cart'][] = $cart;
} else {
//если товар с данным ID был найден то просто обновляем количество этого товара в массиве корзины в сессии
$_SESSION['eshop']['cart'][$index]['quantity'] += $this->_quantity;
}
return true;
}

//метод для обновления данных о товаре в корзине
function update ()
{
//получение данных о продукте с данным ID из БД
$product = $this->getProduct();
//при наличии товаров в корзине
if (count($_SESSION['eshop']['cart']))
{
//ищем в корзине нужный нам продукт
foreach ($_SESSION['eshop']['cart'] as $i=>$val)
{
if ($_SESSION['eshop']['cart'][$i]['id'] == $product->id)
{
//при существовании такого продукта в корзине изменяем данные о количестве товара в корзине
$_SESSION['eshop']['cart'][$i]['quantity'] = $this->_quantity;
break;
}
}
}

return true;
}

//Метод удаления товара из корзины
function delete ()
{
//получение продукта из БД
$product = $this->getProduct();
if (count($_SESSION['eshop']['cart']))
{
foreach ($_SESSION['eshop']['cart'] as $i=>$val)
{
//при наличии записей в корзине перебором ищем запись о нужном нам продукте
if ($_SESSION['eshop']['cart'][$i]['id'] == $product->id)
{
//и удаляем ее smile.gif
unset($_SESSION['eshop']['cart'][$i]);
break;
}
}
}

return true;
}

function getProduct ()
{
$res = mysql_query("SELECT * FROM eshop_products WHERE id = " . $this->_id . " AND active");

$product = mysql_fetch_object($res);
if ($product->id)
{
$res = mysql_query("SELECT * FROM eshop_currency WHERE id = " . intval($product->currency_id));
$product->currency = mysql_fetch_object($res);
}
return $product;
}
}

?>


ПС: Это я изменил одн из написаных мной скриптов под ЦМС Джумлу поэтому возможны проблемы с ним.. но для ознакомления с реализацией корзины думаю вполне сгодиться...

Спустя 3 минуты, 1 секунда (5.11.2010 - 21:28) nugle написал(а):
а можно комментарии хотяб где нибудь поставить, а то плохо понятно..СПАСИБО!буду вникать

Спустя 25 минут, 47 секунд (5.11.2010 - 21:54) inpost написал(а):
Зачем if (isset($_GET['price'])){$_COOKIE['price']=$_GET['price'];} ??? Сразу в кукисы добавляй значение $_GET - setcookie ("price",$_GET['price'], time()+8000);
Вообще, плохой тон переназначать полученные ГЕТ-параметры: $_GET['ses']=$_GET['price']; Надо: $ses = $_GET['price'], вот только зачем...
Я не вижу, что отправляется в $_GET... ты не ту часть кода показал.
Sanchopansa
Новичку давать работать с классами... фейл! Все равно ничего не поймет. А вот работа с кукисами куда эфективнее, чем с сессией. Допустим критикал_еррор выдаст ИЕ, или оформила корзину часа 2 секретутка, потом её вызвали к шеву на ковёр за вчерашний отчет! Она вернулась через пол часа - сессия закрылась! Она психанула и выключила комп. Минус один клиент, и таких оооочень много...

Спустя 12 минут, 24 секунды (5.11.2010 - 22:07) Sanchopansa написал(а):
inpost
Ну что на счет классов то тут я согласен - сглупил... ну я собсно показывал не работу с классами а принцып реализации корзины..

а что по поводу сессии то тут я спорить не стану... твои аргументы весомы но почемуто в большенстве случаев всеравно корзины реализуют на сессиях
Быстрый ответ:

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