| Здравствуйте, уважаемые! Помогите, пожалуйста, доработать shopping cart. Необходимо ограничить кол-во добавляемых в корзину товаров... в каждой рубрике этот лимит индивидуален.
Пример
Калоши 0/3 ---------- Товар 1, Товар 2, Товар 3, Товар 4, Товар 5, Товар 6
]
Майки 0/4 ----------- Товар 1, Товар 2, Товар 3, Товар 4, Товар 5
и т.д.
т.е. в рубрике Калоши мы видим 6 позиций, но разрешается положить в корзину только 3 из 6. Ещё одно уточнение... каждый товар можно добавить только по 1 шт., т.е. нельзя в рубрике Калоши положить в корзину Товар 1 (2шт. или 3 шт.).
<?
function worksCart ($prod) {
if($prod) { //добавление товаров и обновление корзины
if (!isset($_SESSION['cart'])) $_SESSION['cart'] = array();
$cart = &$_SESSION['cart'];
if (is_array($prod)) { //добавление массива товаров
foreach($prod as $key => $val) {
$key = intval($key);
if ($key) {
$val = intval($val);
if (isset($_POST['del']) && in_array($key, $_POST['del']) || !$val) {
//удаление товара из корзины
if (array_key_exists($key, $cart)) unset($cart[$key]);
} else $cart[$key] = $val; //добавление, обновление
}
}
} else {
//добавление одиночного товара
$id = intval($prod);
if ($id) $cart[$id] = array_key_exists($id, $cart) ? $cart[$id] + 1 : 1;
}
} else unset($_SESSION['cart']); //удаление корзины
}
//имеющиеся товары
$goods = array(
79 => array('name'=>'Товар 1','mony'=>120),
102 => array('name'=>'Товар 2','mony'=>60),
89 => array('name'=>'Товар 3','mony'=>35),
211 => array('name'=>'Товар 4','mony'=>86)
);
session_start();
//добавление одиночного товара
if (isset($_GET['add'])) worksCart($_GET['add']);
//добавление массива товаров, например,
//с одной страницы группы выбранных
//и обновление корзины (редактирование)
if (isset($_POST['update'])) worksCart($_POST['prod']);
//удаление корзины
if (isset($_POST['clear'])) worksCart(0);
foreach($goods as $id => $val) {
echo $val['name'] . ", цена: " .$val['mony']. " руб. <a href=\"?add=" .$id. "\">Добавить в корзину</a><br>";
}
if (!empty($_SESSION['cart'])) {
echo "<form method=\"post\">
<input type=\"submit\" name=\"clear\" value=\"clear\">
<table>
<tr>
<td>Товар</td>
<td>Цена, руб</td>
<td>Выбрано, шт</td>
<td>Стоимость, руб</td>
<td>Удалить</td>
</tr>";
$k = 0;
$m = 0;
foreach($_SESSION['cart'] as $key => $val) {
$k += $val;
echo "<tr>
<td><a href=\"goods.php?id=" .$key. "\">" .$goods[$key]['name']. "</a></td>
<td>" .$goods[$key]['mony']. "</td>
<td><input type=\"text\" name=\"prod[" .$key. "]\" value=\"" .$val. "\"></td>
<td>" .$goods[$key]['mony']*$val. "</td>
<td><input type=\"checkbox\" name=\"del[]\" value=\"" .$key. "\"></td>
</tr>";
$m += $goods[$key]['mony']*$val;
}
echo "<tr>
<td colspan=\"2\">total</td>
<td>" .$k. "</td>
<td>" .$m. "</td>
<td> </td>
</tr>
</table>
<input type=\"submit\" name=\"update\" value=\"reload\">
</form>";
} else print "empty";
|
| |