|
|
|
|
|
для: sim5
(28.11.2010 в 03:22)
| | поправлю немного $_SESSION["cart"][$уникальный_идентификатор_товара] = $количество_в_корзине | |
|
|
|
|
|
|
|
для: Lelius
(28.11.2010 в 02:37)
| | Корзина товаров, это целая философия, что будет делать корзина, и как ее написать, зависит как раз от этой философии. Корзина в минимальном плане содержит уникальный id товара, как ключ в массиве товаров выбранных покупателем, под которым как минимум есть значение количества товара, а может быть цена и прочие его характеристики. В этом случае легко получать из такого массива как одиночный товар, так и группу товаров, удалять, добавлять, сортировать и т.п.
У вас же нет корзины, кроме этого, вам уже сказали об операторе IN, тем не менее вы продолжаете третировать MySQL запросами в цикле. И что вам говорить после этого, вернее зачем? | |
|
|
|
|
|
|
|
для: Красная_шляпа
(28.11.2010 в 02:07)
| | У меня еще тут один вопрос появился такой. Я вывожу количество товара таким образом:
foreach($_SESSION["cart"] as $key=>$val) {
$sql = mysql_query("SELECT id_production, title, price, id_catalog FROM production WHERE id_production = $key", $dbcnx);
$foo = mysql_fetch_array($sql); ?>
<input name='number' type='text' size="2" value="<?=$val[$key];?>" />
Но вот если я хочу поменять 1 экземпляр товара на другое число, например, 2 или 3. То как мне его сохранить и как вывести. Если также <?=$val[$key];?> то число не изменится и останется 1.
А после нажатия на кнопку "Пересчитать" выполняется следующий сценарий:
if ($_POST["updbutton"]) {
$id = $_POST["id"];
unset ($_SESSION["cart"][$id]);
}
Это сделано для удаления и непонятно где в $_SESSION или еще можно сохранить количество экземпляров. Первоначально единица 1 появляется при появлении товара в сессии, так:
if (isset($_POST["new"])) {
$new=$_POST["new"];
if(!$_SESSION["cart"][$new])
{
$cart[$new]=1;
$_SESSION["cart"][$new] = $cart;
}
А вот что делать, чтобы поменять на другое число, не знаю. Если знаете, помогите пожалуйста. | |
|
|
|
|
|
|
|
для: Lelius
(27.11.2010 в 23:37)
| | $keys = array_keys($_SESSION["cart"]);
... where id in (".implode(' , ', $keys).");"; | |
|
|
|
|
|
|
|
для: Николай2357
(27.11.2010 в 23:29)
| | Штука конечно замечательная, только он же сразу выдаст несколько записей до прохождения цикла. Чего то мне не сообразить как это будет выглядеть, потому что так как без IN заполняется каждая строка в таблице, а с IN даже не знаю как. Сейчас уже не могу понять. | |
|
|
|
|
|
|
|
для: Lelius
(27.11.2010 в 23:25)
| | Не вникал в беседу, тут мэтры советуют. Но вот в этом случае
<?
foreach($_SESSION["cart"] as $key=>$val) {
$sql = mysql_query("SELECT id_production, title, price, id_catalog FROM production WHERE id_production = $key", $dbcnx);
| посоветовал бы обратить внимание на оператор IN
Замечательная, скажу Вам, штука. | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2010 в 19:19)
| | Пришлось переделывать массив. Большое спасибо за помощь. Теперь работает. Сама корзина теперь такой массив:
if (isset($_POST["new"])) {
$new=$_POST["new"];
if(!$_SESSION["cart"][$new])
{
$cart[$new]=1;
$_SESSION["cart"][$new] = $cart;
}
Выборка такая:
foreach($_SESSION["cart"] as $key=>$val) {
$sql = mysql_query("SELECT id_production, title, price, id_catalog FROM production WHERE id_production = $key", $dbcnx);
$foo = mysql_fetch_array($sql);
А кнопка такая:
<input name='id' type='radio' value="<?=$key;?>" />
Спасибо. | |
|
|
|
|
|
|
|
для: Lelius
(27.11.2010 в 22:02)
| | Вы вообще представляете, сколько строк будет занимать таблица позиций заказов?
Сколько посетителей одновременно будут работать с корзиной?
Сколько товаров в среднем в корзину класть?
Блин, ну ведь чушь же пишете и не стесняетесь нисколько...
Если Вы такой поборник экономии ресурсов, то для работы непосредственно с корзиной сервер вообще можно не затрагивать. Всё сделать на клиентской стороне, а на сервер отправлять уже готовый набор выбранного товара.
Только, повторюсь, я не понимаю, как Вы при этом допустили SELECT в цикле?
А где у Вас живет истинная $i, я вам уже намекнул.
А Sim5 намекнул откытым текстом сказал, что ради приличия ею стоит сделать код товара из базы данных.
Одно другому не противоречит. | |
|
|
|
|
|
|
|
для: Trianon
(27.11.2010 в 20:30)
| | Но выборка и чтение через SELECT намного проще для мускула, потому что именно обновление через UPDATE наиболее нагружают БД. Поэтому апдейт лучше избегать при работе с пользовательской частью сайта. | |
|
|
|
|
|
|
|
для: sim5
(27.11.2010 в 20:38)
| | Там просто более сложные массивы, я думал через $i будет проще реализовать. | |
|
|
|
|