с помощью чекбокса отправить запросы в бд, передавая массив значений

221
02 февраля 2019, 06:50

Делаю личную интеграцию под биржу криптовалют. У меня есть список ВОЗМОЖНЫХ ставок (ордеров), каждая их которых оформлена как form, передающая в input'ах данные для создания ордеров:

            <form action="order_creat.php" method="post" target="_blank" title="Покупаем крипту дешевле. Наращивается <?=$uah;?>. SHORT.">
                        <input type="text" size="5" name="s" value="<?=$b;?>" readonly>
                        <input type="text" size="7" name="quantity" value="<?= number_format($b_koll,8, '.', '');?>" class="colortext">
                        <input type="text" size="1" name="kripta" value="<?= $eth;?>" readonly>
                        <input type="text" size="4" name="oncost" value="<?= $per_cost;?>" readonly>
                        <input type="text" size="10" name="price" value="<?= number_format($b_cost,8, '.', '');?>" class="colortext">
                        <input type="text" size="5" name="on_summ" value="<?= $on_summ;?>" readonly>
                        <input type="text" size="8" name="summ" value="<?= number_format($b_summ,7, '.', '');?>" readonly>
                        <input type="text" size="5" name="block" value="<?='+'. number_format($profit,2, '.', ' ').$uah;?>">
                        <input type="text" size="1" name="block_id" value="1">
                        <input type="hidden" name="order_status" value="<?=$order_status_cr;?>">
                        <input type="hidden" name="pair" value="<?=$eth_uah;?>">
                        <input type="hidden" name="type" value="<?=$b_type;?>">
                        <!--input type="submit" value="Создать ордер! +UAH"-->
                        <?resolution_sell(number_format($b_summ,7, '.', ''), $b);?>
                    </form>
                    <form action="order_creat.php" method="post" target="_blank" title="Покупаем валюту дешевле. Наращивается <?=$eth;?>. SHORT.">
                        <input type="text" size="5" name="s" value="<?= $b;?>" readonly>
                        <input type="text" size="7" name="quantity" value="<?= number_format($bkk_koll,6, '.', '');?>" class="colortext">
                        <input type="text" size="1" name="kripta" value="<?= $eth;?>" readonly>
                        <input type="text" size="4" name="oncost" value="<?= $per_cost;?>" readonly>
                        <input type="text" size="10" name="price" value="<?= number_format($bkk_cost,8, '.', '');?>" class="colortext">
                        <input type="text" size="5" name="on_summ" value="<?= $on_summ;?>" readonly>
                        <input type="text" size="8" name="summ" value="<?= number_format($bkk_summ,7, '.', '');?>" readonly>
                        <input type="text" size="5" name="block" value="<?='+'. number_format($bkk_profit,6, '.', ' ').$eth;?>">
                        <input type="text" size="1" name="block_id" value="1">
                        <input type="hidden" name="order_status" value="<?=$order_status_cr;?>">
                        <input type="hidden" name="pair" value="<?=$eth_uah;?>">
                        <input type="hidden" name="type" value="<?=$b_type;?>">
                        <!--input type="submit" value="Создать ордер! +ETH"-->
                        <?resolution_sell(number_format($bkk_summ,7, '.', ''), $b);
                        echo $b_komis_str .' - '. number_format($b_komis,6, '.', ' ') . $eth;
                        ?>
                    </form>

возле каждой такой ВОЗМОЖНОЙ ставки есть кнопка "Создать ордер", которая передаёт по api на биржу данные для создания ордера: pair - валютная пара quantity - кол-во по ордеру price - цена по ордеру type - тип ордера, может принимать следующие значения: + некоторые данные для записи мне в базу.

Задача следующая: я хочу сделать так, чтоб не нажимать возле каждой ставки "Создать ордер", а отметить их чекбоксами и один раз нажав "создать ордера" отправить эти все данные. Я знаю, что через чек-боксы можно передавать данные в массиве, но они передаются из одного поля. А у меня полей много. Можно ли это решить? Спасибо.

Answer 1
<?php
    $countOfCurrencies = 2; // количество предполагаемых данных (форм)
    if ( isset($_POST) && count($_POST) != 0 ){
        for ($i=0; $i < $countOfCurrencies; $i++) { 
            if ( isset($_POST['cur_'][$i]['check']) && $_POST['cur_'][$i]['check']=='on' ){
                // обработка отправленной пары (пример)
                $data = new array();
                $data[0] = $_POST['item'][$i][0];
                $data[1] = $_POST['item'][$i][1];
                $data[2] = $_POST['item'][$i][2];
                $db->insert($data);
                unset($data);               
            }
        }
    }
?>
<form action="?" method="POST">
    <input type="checkbox" name="cur_[0][check]">Валюта 1<br />
    <input type=text name="item[0][0]"><br />
    <input type=text name="item[0][1]"><br />
    <input type=text name="item[0][2]"><br />
    <input type="checkbox" name="cur_[1][check]">Валюта 2<br />
    <input type=text name="item[1][0]"><br />
    <input type=text name="item[1][1]"><br />
    <input type=text name="item[1][2]"><br />
    <!-- ... //-->
    <input type="submit" name="save" value="создать ордера" />
</form>
READ ALSO
Работы с массивами с ключами PHP

Работы с массивами с ключами PHP

Есть массив на PHP вида:

246
Скачать все зависимости XSL

Скачать все зависимости XSL

Появилась задача скачать XSL шаблоны к себе на серверНо в них много таких строчек: select="document('schema/dict

236
Из числа 1592 получить 31592 при помощи рекурсии [закрыт]

Из числа 1592 получить 31592 при помощи рекурсии [закрыт]

Задача: Рекурсивно описать функцию Head3(N), которая вычисляет число, получаемое приписыванием слева цифры 3 к десятичной записи целого положительного...

207