|
|
|
|
|
для: sim5
(28.10.2008 в 16:00)
| | но у вас тут не реализована возможность перехода на страницу оформления заказа и невозможно со страницы заказа положить в корзину более 1 предмета, а как это можно сделать? | |
|
|
|
|
|
|
|
для: sim5
(28.10.2008 в 17:17)
| | >Но, если база товаров будет расти, то...
эт ясно.... :) | |
|
|
|
|
|
|
|
для: kukuikar
(28.10.2008 в 16:49)
| | Нет, почему же. Если товаров всего с десток, не предполагается их добавление и т.п., то вполне хватит и статического массива, и вполне можно использовать характеристики как значание опшенов. Только свяжите список характеристик в форме по номеру товара (по индексу в массиве), и будет достаточно.
Но, если база товаров будет расти, то... | |
|
|
|
|
|
|
|
для: sim5
(28.10.2008 в 16:24)
| | я считаю что при десятке наименований считаю не целесообразным использовать базу данных...
может я и не прав... | |
|
|
|
|
|
|
|
для: kukuikar
(28.10.2008 в 16:14)
| | Без базы это плохо. Но даже, если товары в файле, а уж тем более описаны массивом, то и ориентируйтесь по индексу массива - пусть это и будет ID товара, ну и далее все привязывать к нему. Это облегчит все. | |
|
|
|
|
|
|
|
для: sim5
(28.10.2008 в 16:00)
| | работа без базы.
все данные о товарах в массиве, их не так много (товаров), поэтому массив статичный.
спасибо. думаю тема исчерпана. по крайней мере для меня. буду чесать репу.... | |
|
|
|
|
|
|
|
для: kukuikar
(28.10.2008 в 15:33)
| | Главное о товаре, что необходимо держать в корзине, это id товара и его количество. ID товара, это уникальный номер, а коли у вас есть список его характеристик, то эти характристики как-то должны быть связаны с товаром по его номеру. От сюда следует, что, если держать в корзине характеристики товаров, то лучше держать не их описание, а уникальные номера этих характеристик - все остальное получать из базы при выводе корзины пользователю.
В свою очередь, корзина должна иметь два представления - динамическая с кратким содержанием (количество товаров в корзине и их обшая цена) и корзина с полным описанием выбранных товаров, в которой можно произвести изменения (добавление, удаление и т.п..).
У вас же в форме и близко нет упоминания на номер товара - как же вы их храните в базе?
Свяжите характеристики товара с id товара, так чтобы товары, его характеристики при получении формы были массивом, ключами которого служили бы номера товаров. Если опираться на естественное (на id товара), то вот пример работы корзины (характеристики и любые другие дополнения, добавлять так, как сказано выше):
<?
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'=>'Топор','mony'=>120),
102 => array('name'=>'Молоток','mony'=>60),
89 => array('name'=>'Стаместка','mony'=>35),
211 => array('name'=>'Ножовка','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>";
}
echo "<hr width=\"100%\" size=\"1\">";
if (!empty($_SESSION['cart'])) {
echo "<form method=\"post\">
<input type=\"submit\" name=\"clear\" value=\"Очистить корзину\">
<table bgcolor=\"#696969\" cellspacing=\"1\" cellpadding=\"4\" width=\"100%\">
<tr bgcolor=\"#f5f5f5\">
<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 bgcolor=\"#ffffff\">
<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 bgcolor=\"#ffffff\">
<td colspan=\"2\">Всего</td>
<td>" .$k. "</td>
<td>" .$m. "</td>
<td> </td>
</tr>
</table>
<input type=\"submit\" name=\"update\" value=\"Обновить корзину\">
</form>";
} else print "Ваша корзина пуста!";
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(28.10.2008 в 14:34)
| |
<form action="./cart.php" method="post">
Футболка<br />
Цвет: белый<br />
Плотность: 160-170<br />
Размер:
<select name="size" class="">
<option value="M - (46-48)">M - (46-48)</option>
<option value="L - (50-52)">L - (50-52)</option>
<option value="XL - (54-56)">XL - (54-56)</option>
<option value="XXL - (56-58)">XXL - (56-58)</option>
</select>
<input name="count" value="" type="text">
<input name="color" value="Белый" type="hidden">
<input name="plot" value="160-170" type="hidden">
<input value="Добавить" name="add2cart" type="submit">
</form>
|
добавляется количество из поля count | |
|
|
|
|
|
|
|
для: kukuikar
(28.10.2008 в 14:30)
| | Товар добавляется по одному или произвольное число? Что означают $_POST['size'], $_POST['plot'] и $_POST['color'] ? | |
|
|
|
|
|
|
|
для: sim5
(28.10.2008 в 13:08)
| |
<?php
if(isset($_POST['add2cart']))
{
$order = (isset($_SESSION["order"]) && is_array($_SESSION["order"])) ? $_SESSION["order"] : array();//тут проверяется есть ли массив, а если нету создать.
$order[] = array('plot' => $_POST['plot'], 'size' => $_POST['size'], 'color' => $_POST['color'], 'count' => $_POST['count']);//тут записываем данные поста
$_SESSION['order'] = $order;
}
?>
|
Только ничего не меняется..... | |
|
|
|
|