считывание данных

Borland

Новичок
считывание данных

Стоит задача:
Чуваки заказывают товары(бельё) у белья есть размр, цвет, количество.
Посл этого чувак лезет в корзину и смотрит чё заказал.
Но вот ему приспичило поменять кол-во для например трусов в горошек.
Поменял в поле -кол-во и жмет субмит.
А как мне распознать, что это поле относится именно к трусам в горошек, а не к ластам например. Ведь кол-во полей я не знаю, а поле содержит только значение = количеству товара.

В рнр можно динамически геерть имена переменных? короче как решить эту задачу.
Подскажите пожалста,а то у меня видимо мозгов мало. :)
 

Фанат

oncle terrible
Команда форума
при чём здесь имена ПЕРЕМЕННЫХ ПХП?
когда тебе надо сгенерить имя ПОЛЯ ВВОДА В ХТМЛ форме?
пхп может сгенерить любой текст. вот и сгенери форму, чтобы имена ввода были разные
 

Borland

Новичок
не о html проблем нет, а как считать форму, ведь кол-во полей "произвольно". Имена- разные.
 

Borland

Новичок
дык,я же если читаю форму, то грубо-говоря знаю какие имена полей там, а тут я вооще о формене имею представления, тк кол-во полей разное. Ибо если даже сопоставть их кол-ву полей в БД, то всё равно косяк. ибо этот придурок может дозаказать товаром, а потом не обновляя окна, где отображается карзина внести изменения
 

dorfey

Guest
Borland
хранить заказ например в массиве:
$tovar=array([id_товаров]=>[количесво]);
в форме выводить заказы так:
название($tovar[id]) с инпутом для ввода количесва ($tovar[id][count])
и кнопкой субмит для ввода новых данных в массив заказов.
 

Фанат

oncle terrible
Команда форума
как ты ласково о клиентах магазина-то.
то есть, ты никогда с данными переменной длины не работал?
а понятие цикла тебе знакомо?
 

Borland

Новичок
Автор оригинала: dorfey
Borland
в форме выводить заказы так:
название($tovar[id]) с инпутом для ввода количесва ($tovar[id][count])
Вот чесно скажу, может я дерево( а это скорее всего уже так) но вот этого я не догнал
 

Kelkos

Сам себе программер
Хм.. лично я сделал так - имена полей text генерил по типу идентификатор::id.
Т.е имена получались name="cnt::3"
ну а далее перебирал все ключи в массиве $_POST и смотрел, если начинаются на cnt:: - значит это именно то, что нужно.
Также можно нагрузить hidden переменными - айдюшниками форму, что бы не перебирать всё. типа
<input name="goods[]" type="hidden" value="<?=$id ?>">
И в $_POST получишь массив $_POST['goods'] - содержащий все id твоих товаров.. ну и перебрать их по именам.

Возможно есть более изящьные способы.. А может и нет.
 

dorfey

Guest
$basket=array();
$basket[0]['name']=компьютер;
$basket[0]['count']=5;
$basket[1]['name']=телевизор;
$basket[1]['count']=7;

в форме будет выглядеть примерно так:
цикл(
товар: $basket[0]['name'] <input name="num_products_0" value="указываем_количесво(по дефолту 1)">
);
при клике на кнопку "пересчет" проверяем все num_products_
и те которые имеют в форме количесво >1, обновляем их новые значения в массиве.

ну вот вроде так, если я конечно ченить не пропустил. ;)
 

Kelkos

Сам себе программер
dorfey
Ох странная у тебя структура корзинки.. ох странная..
Хотя для простеших магазинов пойдёт.

Вообще "комильфо" механизма корзики считается струкрура типа
$basket[0]['id']=...
$basket[0]['count']=...
...........
$basket[n]['id']=...
$basket[n]['count']=...

Ну и возможные вариации типа предварительно рассчитанной цены или дополнительно поля с названием товаров, которые вдобавок должны проверяться, чтобы данные обновлялись при изменении базы товаров.

Но в любом случае все операции над товарами привязываются к их id, а не к порядковому номеру.
 

dorfey

Guest
Ох странная у тебя структура корзинки.. ох странная..
Чем именно странная?


Вообще "комильфо" механизма корзики считается струкрура типа
$basket[0]['id']=...
$basket[0]['count']=...
...........
$basket[n]['id']=...
$basket[n]['count']=...
а у меня разве не так? ;)

Ну и возможные вариации типа предварительно рассчитанной цены или дополнительно поля с названием товаров, которые вдобавок должны проверяться, чтобы данные обновлялись при изменении базы товаров.
ну я и не ставил целью выкладывать тут полный модуль своей "корзинки". я привел прастейший пример как это может быть реализовано.

Но в любом случае все операции над товарами привязываются к их id, а не к порядковому номеру.
а вот тут мона чуть поподробнее?
 

|)!@610

Guest
Есть допустим такой вариант!
Ты выводиш в цикле список товаров в корзине
к имени поля приписываеш значение переменной цикла допустим prod_qty_$i

А потом попробуй разобратся с моим циклом, а то мне на обед уже бежать надо)))
$prod_qty = split("@", $GLOBALS["HTTP_SESSION_VARS"]["prod_qty_s"]);
$prod_id = split("@", $GLOBALS["HTTP_SESSION_VARS"]["prod_id_s"]);
$prod_price = split("@", $GLOBALS["HTTP_SESSION_VARS"]["prod_price_s"]);

$rqty = 0;

for($i=0;$i<sizeof($prod_qty)-1; $i++){
if(!empty($GLOBALS["HTTP_POST_VARS"]["prod_qty".$i])){
$rqty = $GLOBALS["HTTP_POST_VARS"]["prod_qty".$i];
if(Trim($rqty) == false){//Проверка на правильность ввода
$rqty = 0;
}
if((!empty($GLOBALS["HTTP_POST_VARS"]["chk_r".$i])) or (($rqty <= 0) or ($rqty > 10000))){//Проверка на правильность ввода
$prod_id[$i] = "";
$prod_price[$i] = 0;
$prod_qty[$i] = 0;
}else{
$prod_qty[$i] = $rqty;
}
}
}
 
Сверху