Пытаюсь написать скрипт добавления нескольких товаров в корзину. Но не могу понять алгоритм действий. Есть чекбокс <input name="addmebasket" type="checkbox" checked="checked"/> В скрипте обработки не знаю как это расписать.
Какой еще алгоритм? Предположим есть юзер, у юзера есть свой ид, при клике добавляется запись с ID товара, ID юзера и статус.
Вот, сформулировал вопрос. Есть функция добавления товаров в корзину, но она не позволяет добавлять массив, только по одному товару. Как проверить у каких именно товаров чекбоксы отмечены, посчитать сколько чекбоксов и столько же раз запустить функцию добавления товара? Чтобы каждый раз функция добавляла новый товар.
<input name="addmebasket[]" type="checkbox" value="айди_товара" checked="checked"/> а получать $_REQUEST['addmebasket'], получишь массив айди товаров, которые выбраны для добавления в корзину
Как определить сколько товаров выбрано (сколько в массиве) и столько же раз запустить цикл с функцией добавления каждого товара? Не пойму как именно поочереди товары в цикле добавлять.
я тоже раньше пользовался. но в связи с тем, что в разных языках программирования размер массива узнаётся по разному, легче оказалось пользоваться sizeof - лучше запоминается.
Что то идет не так: В хтмл HTML: <input name="addmanybasket[]" type="checkbox" value="<?echo $arElement["ID"]?>" checked="checked" class="cb"/> В пхп PHP: $productarray = $_REQUEST['addmamybasket']; $countproduct = count($productarray); for ( $i = 0; $i < $countproduct; $i++ ) { if ($QUANTITY[$i]>0) { Add2BasketByProductID($ID[$i], $QUANTITY[$i], $product_properties[$i]); } }
Tchort воо, я ждал этого вопроса. каким образом ты связываешь кол-во товара с выбранными айди? не пробовал сделать print_r массива с количеством и выбранными айди? будешь удивлён, увидев, что их длина отличается
этого я сказать точно не могу этого я тоже сказать точно не могу. способов много. как вариант: HTML: <input type="checkbox" name="products[p1][id]" value="1"> <input type="text" name="products[p1][value]" value="0"> <input type="checkbox" name="products[p2][id]" value="2"> <input type="text" name="products[p2][value]" value="0"> PHP: <?php $products = $_REQUEST['products']; foreach($products as $product){ if(isset($product['id']) && $product['value'] > 0){ // тут нужно заносить данный продукт в корзину } } ?>
Gromo PHP: if(!$strError && Add2BasketByProductID($product['id'], $QUANTITY, $product['value'])) { if($action == "ADD2BSKETMANY") LocalRedirect($APPLICATION->GetCurPageParam("", array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"]))); } Как узнать кол-во этого товара? И я сказать честно, не понял что в форме)) HTML: <input type="checkbox" name="products[p1][id]" value="1"> <input type="text" name="products[p1][value]" value="0"> <input type="checkbox" name="products[p2][id]" value="2"> <input type="text" name="products[p2][value]" value="0"> 1ое - ID, 2ое - значение чего? Функция для добавления товара такая: Basket::Add( array arFields ); Функция добавляет товар в корзину, если его ещё нет, и обновляет параметры товара с увеличением количества, если он уже находится в корзине. В массиве arFields перечисляются все параметры товара, которые нужны для работы модуля Интернет-магазина (т.е. этот модуль не зависит от других модулей и работает полностью самостоятельно). arFields ( PRODUCT_ID - уникальный в рамках модуля код товара (обязательное поле); PRODUCT_PRICE_ID - дополнительный код товара; PRICE - стоимость единицы товара (обязательное поле); CURRENCY - валюта стоимости единицы товара (обязательное поле), если валюта отличается от базовой валюты для данного сайта, то стоимость будет автоматически сконвертирована по текущему курсу; WEIGHT - вес единицы товара; QUANTITY - количество единиц товара; LID - сайт, на котором сделана покупка (обязательное поле); DELAY - флаг "товар отложен" (Y/N); CAN_BUY - флаг "товар можно купить" (Y/N) - может устанавливаться автоматически про наличии функции обратного вызова для поддержки актуальности корзины; NAME - название товара (обязательное поле); CALLBACK_FUNC - название функции обратного вызова для поддержки актуальности корзины (описание ниже); MODULE - модуль, добавляющий товар в корзину; NOTES - особые заметки, например, тип цены; ORDER_CALLBACK_FUNC - название функции обратного вызова для оформления заказа (описание ниже); DETAIL_PAGE_URL - ссылка на страницу детального просмотра товара; CANCEL_CALLBACK_FUNC - название функции обратного вызова для отмены заказа (описание ниже); PAY_CALLBACK_FUNC - название функции обратного вызова, которая вызывается при установке флага "Доставка разрешена" заказа; FUSER_ID - идентификатор пользователя интернет-магазина, необязательный параметр, по умолчанию CSaleBasket::GetBasketUserID() (текущий пользователь); PROPS - массив свойств товара, который сохраняется в корзине. Каждый элемент этого массива является массивом следующего формата: array("NAME" => "Название свойства", "CODE" => "Код свойства", "VALUE" => "Значение свойства", "SORT" => "Индекс сортировки") );
Tchort value = quantity. какие ещё дополнительные поля хочешь добавить, я не знаю - просто показал пример как можно сделать. воспользуйся print_r для более наглядного отображения полученных данных - некоторые вопросы должны исчезнуть.