Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2011, 01:00   #1
bboyb-rock
 
Регистрация: 28.01.2011
Сообщений: 7
По умолчанию Код покупательской корзины

Описание: имеется код покупательской корзины, добавил параметр prod_size сделал методом POST, теперь размер появился а вот если добавляеш несколько товаров в корзину остается только первый добавленный а остальные не видно но при удалении появляется один за одним, сумму считает. Как зделать так чтобы было видно все товары в корзине?

Код:
<?PHP 
// shopping cart
//calculate shopping cart value
if (isset($_GET["shopping_cart"]) || isset($_POST["shopping_cart"]))
{
$prod_size = $_POST["product_size"];
if (isset($_GET["add2cart"]) && $_GET["add2cart"]>0) //add product to cart with productID=$add
{
$q = db_query("select in_stock from ".PRODUCTS_TABLE." where productID='".$_GET["add2cart"]."'") or die (db_error());
$is = db_fetch_row($q); $is = $is[0];
//$_SESSION[gids] contains product IDs
//$_SESSION[counts] contains product quantities ($_SESSION[counts][$i] corresponds to $_SESSION[gids][$i])
//$_SESSION[gids][$i] == 0 means $i-element is 'empty'
if (!isset($_SESSION["gids"]))
{
$_SESSION["gids"] = array();
$_SESSION["counts"] = array();
}
//check for current item in the current shopping cart content
$i=0;
while ($i<count($_SESSION["gids"]) && $_SESSION["gids"][$i] != $_GET["add2cart"]) $i++;
if ($i < count($_SESSION["gids"])) //increase current product's quantity
{
$_SESSION["counts"][$i]++;
}
else //no item - add it to $gids array
{
$_SESSION["gids"][] = $_GET["add2cart"];
$_SESSION["counts"][] = 1;
}
header("Location: index.php?shopping_cart=yes&prod_size=".$prod_size);
}
if (isset($_GET["remove"]) && $_GET["remove"] > 0) //remove from cart product with productID == $remove
{
$i=0;
while ($i<count($_SESSION["gids"]) && $_SESSION["gids"][$i] != $_GET["remove"]) $i++;
if ($i<count($_SESSION["gids"])) $_SESSION["gids"][$i] = 0;
header("Location: index.php?shopping_cart=yes");
}
if (isset($_POST["update"])) //update shopping cart content
{
foreach ($_POST as $key => $val)
if (strstr($key, "count_"))
{
//select product's in stock level
$q = db_query("select in_stock from ".PRODUCTS_TABLE." where productID='".str_replace("count_","",$key)."'") or die (db_error());
$is = db_fetch_row($q); $is = $is[0];
if ($val > 0)
{
for ($i=0; $i<count($_SESSION["gids"]); $i++)
{
if ($_SESSION["gids"][$i] == str_replace("count_","",$key))
{
$_SESSION["counts"][$i] = floor($val);
}
}
}
else //remove
{
$i=0;
while ($_SESSION["gids"][$i] != str_replace("count_","",$key) && $i<count($_SESSION["gids"])) $i++;
$_SESSION["gids"][$i] = 0;
}
}
header("Location: index.php?shopping_cart=yes");
}
if (isset($_GET["clear_cart"])) //completely clear shopping cart
{
//clear cart
if (isset($_SESSION["gids"])) unset($_SESSION["gids"]);
if (isset($_SESSION["counts"])) unset($_SESSION["counts"]);
header("Location: index.php?shopping_cart=yes");
}
 
 
 
//shopping cart items count
$c = 0;
if (isset($_SESSION["gids"]))
for ($j=0; $j<count($_SESSION["gids"]); $j++)
if ($_SESSION["gids"][$j]) $c += $_SESSION["counts"][$j];
 
//not empty?
if (isset($_SESSION["gids"]) && $c)
{
$k = 0; //total cart value
 
$products = array();
 
for ($i=0; $i<count($_SESSION["gids"]); $i++)
if ($_SESSION["gids"][$i])
{
$q = db_query("SELECT name, Price, product_code, size_one, size_two, size_three, size_four, size_five FROM ".PRODUCTS_TABLE." WHERE productID='".$_SESSION["gids"][$i]."'") or die (db_error());
if ($r = db_fetch_row($q))
{
$tmp = array("id"=>$_SESSION["gids"][$i], "name"=>$r[0], "quantity"=>$_SESSION["counts"][$i], "cost"=>show_price($_SESSION["counts"][$i]*$r[1]), "product_code"=>$r[2]);
 
 
$k += $_SESSION["counts"][$i]*$r[1];
 
 
$tmp["prod_size"] = $_GET["prod_size"];
for($i=3; $i<=7; $i++)
{
if($r[$i] != "")
{
$tmp["size_".$i] = $r[$i];
}
}
$products[] = $tmp;
}
}
//total...
$smarty->assign("cart_content", $products);
$smarty->assign("shopping_cart_value", $k);
$smarty->assign("cart_total", show_price($k));
 
}
else
{
$smarty->assign("cart_total", "");
}
 
$smarty->assign("main_content_template", "shopping_cart.tpl.html");
 
 
}
?>

Последний раз редактировалось bboyb-rock; 28.01.2011 в 19:14.
bboyb-rock вне форума Ответить с цитированием
Старый 28.01.2011, 11:18   #2
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Код длинный. Вряд ли кто-то читать будет. Покажите отрывок, который содержит ошибку.
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 28.01.2011, 19:06   #3
bboyb-rock
 
Регистрация: 28.01.2011
Сообщений: 7
По умолчанию

Да вот если бы я знал в чем проблема!
я добавил в скрипт вот этот цикл
Код:
$tmp["prod_size"] = $_GET["prod_size"];
for($i=3; $i<=7; $i++)
{
if($r[$i] != "")
{
$tmp["size_".$i] = $r[$i];
}
}
А вот этот цикл я так полагаю перестал работать правильно, что с этим делать я не знаю
Код:
//shopping cart items count
$c = 0;
if (isset($_SESSION["gids"]))
for ($j=0; $j<count($_SESSION["gids"]); $j++)
if ($_SESSION["gids"][$j]) $c += $_SESSION["counts"][$j];
bboyb-rock вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции корзины для интернет-магазина Фибер Оптик PHP 2 02.03.2012 12:43
Изменение имени корзины через реестр IzIFRag Общие вопросы Delphi 6 21.05.2010 09:37
Удаление файла из корзины файлом bat? syt Помощь студентам 1 07.04.2010 17:55
Ищу программиста для написания корзины на сайт micle_k Фриланс 1 11.11.2008 18:06
Редактирование Корзины injhdc Софт 1 30.09.2008 15:20