проблема с повторным добавлением в корзину

nikollass

Guest
проблема с повторным добавлением в корзину

вот возникла проблемка, помогите пожалуйста решить.
Значит есть интернет магазин и корзина:
использую сессию, через которую передаю зачение id товара, обрабатываю массив:

PHP:
foreach($Arr as $key=>$value) $fb=$fb."  f.id=$value or ";
	$fb = substr($fb,0,strlen($fb)-4);
ну и выбираю данные:

PHP:
$r=mysql_query("SELECT f.id ... from films f, ... where fi.id = f.id AND ($fb) ;");
Данные нормально выбранны и их id сохранены в сессии.

Подскажите как лучше еще раз добавить в корзину данные, ведь этот скрипт уже нерабочий из-за
PHP:
" f.id=$value or "
там уже селект неправильный. Буду очень признателен :)
 

Нечто

Психолог РНРClub
Приведенный код крив и не особо ясен.
Если $Arr - список ID выбранных товаров, то выборка будет следующая:
PHP:
$r=mysql_query("SELECT f.id ... from films f, ... where fi.id = f.id AND f.id IN (". implode(",", $Arr) .")");
 

nikollass

Guest
Автор оригинала: Нечто
Приведенный код крив и не особо ясен.
Если $Arr - список ID выбранных товаров, то выборка будет следующая:
PHP:
$r=mysql_query("SELECT f.id ... from films f, ... where fi.id = f.id AND f.id IN (". implode(",", $Arr) .")");
Возможно я немного не уточнил. Я использую checkbox, поэтому надо с помощью foreach перебрать массив. Проблема возникает при повторном добавлении больше 1 товара.
 

nikollass

Guest
Автор оригинала: Фанат
объясни толком, какая у тебя проблема
OK. Значит на одной странице из базы данных выбирается товар, около каждого товара есть чекбоксы, допустим я помечаею первых 3 чекбокса и передаю их значение на страницу корзины, там обрабатываю массив с помощью
PHP:
foreach($Arr as $key=>$value) $fb=$fb."  f.id=$value or ";
$fb = substr($fb,0,strlen($fb)-4);
, чтобы узнать какие чекбоксы были помечены и получить их id, ну и потом делаю селект
PHP:
$r=mysql_query("SELECT f.id ... from films f, ... where fi.id = f.id AND ($fb) ;");
, ну и в конце понятно, что селект будет такой:
PHP:
SELECT f.id ... from films f, ... where fi.id = f.id AND (f.id=1 or f.id=2 or f.id=3) ;
, ну и
PHP:
$fb
зарегистрированна в сессии и будет равна:
PHP:
$fb='f.id=1 or f.id=2 or f.id=3';
, так что можно походить по другим страницам, а если надо вернуться в корзину. Вот. Но как добавить еще несколько записей? Ясно что этот селект неподходит, он будет иметь вид:
PHP:
SELECT f.id ... from films f, ... where fi.id = f.id AND (f.id=1 or f.id=2 or f.id=3 f.id=4 or f.id=5) ;
(как видно нехватает одного "or")
Возможно такая обработка массива некатит, и нужно что-то другое. Вот это я и хотел узнать.
 

Фанат

oncle terrible
Команда форума
$fb зарегистрированна в сессии и будет равна:
$fb='f.id=1 or f.id=2 or f.id=3';
это шутка такая?
с каких это пор в сессии стали регистрировать куски программ?
тебе не приходило регистрировать в сессии ДАННЫЕ?!
 

nikollass

Guest
Все проблему решил. Нечто спасибо, наставил на путь истинный. Подсказал как начать, а дальше я сам разобрался. Фанат я так и непонял, почему $fb не может быть равна 'f.id=1 or f.id=2 or f.id=3' и быть зарегиной в сессии. Хотя ладно, я все равно по-другому сделал. Тема закрыта.
 

Just4Fun

Guest
nikollass, это просто идиотизм.. можно было сделать:
$a = implode(',',...);
AND f.id IN($a);
 
Сверху