Появилась такая проблема: при нажатии на добавление или на уменьшение кол-ва товара в корзине все вроде работает, но только пока товар в корзине 1, если же товаров несколько то действие всеравно применятся к первому товару. До этого было устроено немного по другому и все работало. Было поле куда нужно ввести цифру и нажать кнопку обновить, но мне кажетс это не очень удобно и я добавил кнопочки "+" и "-" вот только не совсем работает. Помогите пожалуйста, что я упустил?
Вот код функций корзины:
Код:
<?
function add_to_cart($id)
{
if(isset($_SESSION['cart'][$id]))
{
$_SESSION['cart'][$id]++;
return true;
}
else
{
$_SESSION['cart'][$id] = 1;
return true;
}
return false;
}
function update_cart()
{
foreach($_SESSION['cart'] as $id => $qty)
{
if($_POST[$id] == '0')
{
unset($_SESSION['cart'][$id]);
}
else
{
$_SESSION['cart'][$id] = $_POST[$id];
}
}
}
function more()
{
foreach($_SESSION['cart'] as $id => $qty)
{
$_SESSION['cart'][$id]++;
return true;
}
}
function less()
{
foreach($_SESSION['cart'] as $id => $qty)
{
$_SESSION['cart'][$id]--;
return false;
}
}
function unset_cart()
{
foreach($_SESSION['cart'] as $id => $qty)
{
unset($_SESSION['cart'][$id]);
}
}
function total_items($cart)
{
$num_items = 0;
if(is_array($cart))
{
foreach($cart as $id => $qty)
{
$num_items = $num_items + $qty;
}
}
return $num_items;
}
function total_price($cart)
{
$total_price = 0;
$sales = 1;
db_connect();
if(is_array($cart))
{
foreach($cart as $id => $qty)
{
$query = "SELECT price FROM products WHERE id='$id'";
$result = mysql_query($query);
if($result)
{
$item_price = mysql_result($result,0,'price');
$total_price = ($total_price + $item_price * $qty) * $sales;
}
}
}
return $total_price;
}
?>
Код индекса:
Код:
<?
include('db_fns.php');
include('cart_fns.php');
session_start();
if(!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
$_SESSION['total_items'] = 0;
$_SESSION['total_price'] = 0;
}
$view = empty($_GET['view']) ? 'main' : $_GET['view'];
switch($view)
{
case('main'):
$cat_leather = get_cat_leather();
$cat_jewellery = get_cat_jewellery();
break;
case('sub'):
$cat = $_GET['id'];
$products = get_cat_products($cat);
break;
case('product'):
$id = $_GET['id'];
$product = get_product($id);
break;
case('catalog'):
$cat_leather = get_cat_leather();
$cat_jewellery = get_cat_jewellery();
break;
case('add_to_cart'):
$id = $_GET['id'];
$add_item = add_to_cart($id);
$_SESSION['total_items'] = total_items($_SESSION['cart']);
$_SESSION['total_price'] = total_price($_SESSION['cart']);
header('Location: index.php?view=product&id='.$id);
break;
case('update_cart'):
update_cart();
$_SESSION['total_items'] = total_items($_SESSION['cart']);
$_SESSION['total_price'] = total_price($_SESSION['cart']);
header('Location: index.php?view=cart');
break;
case('more'):
more();
$_SESSION['total_items'] = total_items($_SESSION['cart']);
$_SESSION['total_price'] = total_price($_SESSION['cart']);
header('Location: index.php?view=cart');
break;
case('less'):
less();
$_SESSION['total_items'] = total_items($_SESSION['cart']);
$_SESSION['total_price'] = total_price($_SESSION['cart']);
header('Location: index.php?view=cart');
break;
case('unset_cart'):
unset_cart();
$_SESSION['total_items'] = total_items($_SESSION['cart']);
$_SESSION['total_price'] = total_price($_SESSION['cart']);
header('Location: index.php?view=cart');
break;
case('cart'):
break;
}
include($_SERVER['DOCUMENT_ROOT'].'/vatago/vatago/vatago.php');
?>
Код корзины:
Код:
<?
if($_SESSION['cart'] != '0')
{
?>
<form action="" method="post" id="cart-form">
<table cellpadding="5" cellspacing="2" id="cartd">
<tr id="cartr">
<td width="300">Название:</td>
<td width="70">Код:</td>
<td width="130">Цена:</td>
<td width="70">Кол-во:</td>
<td width="130">Всего:</td>
</tr>
<? foreach($_SESSION['cart'] as $id => $quantity):
$product = get_product($id);
?>
<tr id="cartr2">
<td width="300"><?=$product['title'];?></td>
<td width="70"><?=$product['code'];?></td>
<td width="130"><?=number_format($product['price']);?> грн.</td>
<td width="70"><b><a href="index.php?view=more">+</a></b> <input type="text" size="1" name="<?=$id;?>" maxlength="3" value="<?=$quantity;?>" /> <b><a href="index.php?view=less">-</a></b></td>
<td width="130"><?=number_format($product['price'] * $quantity);?> грн.</td>
</tr>
<?endforeach;?>
</table>
<table cellpadding="5" cellspacing="2" id="cartd2">
<tr id="cartr2">
<th width="70"><?=$_SESSION['total_items'];?></td>
<th width="130"><?=number_format($_SESSION['total_price']);?> грн.</td>
</tr>
</table>
<div align="center"><input formaction="index.php?view=update_cart" type="submit" name="update" value="Обновить" /><input formaction="index.php?view=unset_cart" type="submit" name="reset" type="button" value="Сброс"></div>
</form>
<?
}
else
{
echo "Ваша корзина пуста!";
}
?>