Forum Webscript.Ru

Программирование => PHP => Тема начата: от 24 Января 2002, 10:50:16

Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: от 24 Января 2002, 10:50:16
Выводится список товаров, около каждого есть checkbox name=id value=[номер товара из MySQL], ну и внизу кнопка submit.

Как мне организовать, чтобы в сессию положились номера всех товаров. Получается надо чтобы у первого товара переменная была ID у второго уже ID1 и т.д. или это как-то по другому надо делать?

Ну и соответсвенно как опять же всё это дело достать из сессии, при обращении к корзине?
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: Макс от 24 Января 2002, 13:26:05
во-первых
checkbox name=id[] value=[номер товара из MySQL]
то есть id - должен быть массивом.
Цитировать
Как мне организовать, чтобы в сессию положились номера всех товаров.
session_register(\'id\');


Цитировать
Ну и соответсвенно как опять же всё это дело достать из сессии, при обращении к корзине?

unset($id);
session_start();
session_register(\'id\');
$id=$HTTP_SESSION_VARS[\'id\'];
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: AlieN от 24 Января 2002, 14:43:54
Я бы всё сделал не через сессии а через куки
тогда всё элементарно
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: Britva от 24 Января 2002, 15:05:16
Цитировать
Я бы всё сделал не через сессии а через куки
тогда всё элементарно

хм, чем элементарней?
сессии и так используют куки (если они включены у юзера)
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: от 24 Января 2002, 16:10:09
Макс
Спасибо всё заработало!

Britva
Цитировать
хм, чем элементарней?
сессии и так используют куки (если они включены у юзера)

Это точно, а что AlieN предложил я не совсем понял...


Дальше у меня ещё такой вопрос возник. Я вывожу содержание корзины, запрос к mysql типа WHERE id=$val.

Функция все-тажа, которая и просто список товаров выводит, только теперь checkbox должен играть роль удаления. Отмеченные пункты (id) надо убрать из массива в сессии. Как это можно осуществить?
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: DRon от 24 Января 2002, 17:26:17
Макс
А ещё фигня получается, что после первого внесения нескольких ID в сессию, больше внести не получается...
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: Макс от 25 Января 2002, 00:39:17
По поводу удаления:
То же чекбоксы оформляешь как массив, только с именем другим dels[] например. тогда
$id=array_diff($id,$dels);

Цитировать
А ещё фигня получается, что после первого внесения нескольких ID в сессию, больше внести не получается...

Совсем ничего или только id товара не добавляется?
Скорее всего дело в том что после внесения нескольких id в сессию массив id уже существует и последующие добавления нужно делать уже либо c с помощью конструкций типа
$id[N]=$id_товара
или с помощью array_push()
(наверное при открытии сессии стоит сразу записать в нее пустой массив:
$id=array();
session_register(\'id\');
и потом добавлять в этот массив ID добавляемых в корзину товаров.


А если вообще ничего не вносится, то покажи код и содержимое сессионных файлов после первого добавления и после второй попытки добавить что-то в сессию
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: AlieN от 25 Января 2002, 17:20:24
Удаляешь элементарно:
Каждому элементу корзины присваиваешь имя tovar
Когда идёт запрос на удаление
while(list($key,$val) = each($temparray)) {
   list($tempname, $tempval) = explode("=", $val);
   if($tempname=="tovar"){$tovar[]=urldecode($tempval);}
}
for($i=0;$i
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: DRon от 29 Января 2002, 09:15:40
Макс
Наконец-то смог проверить все, и вот что получается:

Цитировать
покажи код и содержимое сессионных файлов после первого добавления и после второй попытки добавить что-то в сессию


эти строки стоят вверу index.php:
unset($id);
session_start();

далее когда я хочу добавить товар, вызывается:

$rrr = count($order_id);
for ($i=0; $i<$rrr; $i++)
{
$id=array();
array_push ($id,$order_id[$i]);
session_register(\'id\');
}

получается что в сессию записывается только последний элемент, и он всегда перезаписывается, т.е. щас 3ий, выберу 2ой он вместо 3го запишется:
id|a:1:{i:0;s:1:"3";}

======

Также у меня получилось сделать чтобы заносилось сразу несколько элементов, тогда $id=array(); , я выносил из цикла for и ставил его перед функций добавления, но остаётся всё таже проблема занес я 3 элемента, зашел заново на выбор товара выбрал ещё парочку, и они заносятся вместо тех трех.

сессия выглядит вот так:
id|a:2:{i:0;s:1:"2";i:1;s:1:"3";}
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: Britva от 29 Января 2002, 12:30:37
Цитировать
$rrr = count($order_id);
for ($i=0; $i<$rrr; $i++)
{
$id=array();
array_push ($id,$order_id[$i]);
session_register(\'id\');
}

вынеси session_register за цикл, а $id = array() перед циклом.
Название: Интернет магазин на PHP+MySQL. Подскажите алгорим работы корзины?!
Отправлено: DRon от 29 Января 2002, 21:56:33
Britva
AlieN
Макс
Вот до чего я дошел:

HTML страницы заказов:

выделяем товары


вводим их кол-во


далее вызывается функция

function add_products() {

global $product_id,$product_count,$shop;

for ($i=0; $i{

echo "ID продукта:";
echo $product_id[$i];
echo " ";

reset($product_count);
while (list ($key, $val) = each ($product_count))
{
$iii = $val[$product_id[$i]];
if (isset($iii))
{echo "Количество: $iii
";}
}
}
session_register("shop");
}

Эта функция выводит данные типа:
ID продукта:2 Количество: 7457
ID продукта:3 Количество: 5745


Все вроде чики-пики ID соответсвует кол-ву, но как это загнать в массив вида
array(
"2" => "7457",
"3" => "5745"
);
а потом этот массив в сессию...