Как отправить все значения этой формы в виде массива и l oop через при отправке в SQL db? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть форма с некоторыми текстовыми полями, которые я хочу отправить в базу данных после их заполнения. Я новичок от ie до PHP, поэтому я не знаю, как сохранить все значения в массив и отправить.

Вот моя таблица, обернутая в форму:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
        </br>
        <form action="" method="post">
            <div id="wrapper">
                <button type="submit" class="btn" name="add_device">Add devices</button>
            </div>
            </br>
            <table id="ble_table" class="table table-bordered table-striped" cellspacing="0" width="100%">
                <tr>
                    <th>No.</th>                    
                    <th>Serial no.</th>
                    <th>IMEI</th>                    
                </tr>
                <tr>
                    <td>1</td>                        
                    <td><input type="text" placeholder="Serial no." class="inputs" name="serial_no" id="serial_no" /></td>
                    <td><input type="text" placeholder="IMEI" class="inputs lst" name="imei" id="imei" /></td>
                </tr>
            </table>
        </form>
    </form>

jquery для добавления новых строк при нажатии Enter:

 var i = $('table tr').length;
    $(document).on('keyup', '.lst', function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 13) {
            html = '<tr>';
            html += '<td>' + i + '</td>';
                html += '<td><input type="text" class="inputs" name="serial_no' + i + '" id="serial_no' + i + '" /></td>';
                html += '<td><input type="text" class="inputs lst" name="imei' + i + '" id="imei' + i + '" /></td>';
            html += '</tr>';
            $('table').append(html);
            $(this).focus().select();
            i++;
        }
    });

    $(document).on('keydown', '.inputs', function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 13) {
            var index = $('.inputs').index(this) + 1;
            $('.inputs').eq(index).focus();
            event.preventDefault();
        }
    });

Одна очень важная вещь, которую нужно знать : это таблица динамического c, поэтому при нажатии клавиши ввода я фактически создаю новую строку (см. Функцию jquery).

РЕДАКТИРОВАТЬ :

Печать $ _POST дает мне следующее:

Array ( [0] => serial1 ) Array ( [0] => imei1 ) serial2imei2serial3imei3serial4imei4

Я зацикливаюсь так:

$myArray = $_POST;
foreach ($myArray as $index) {
    print_r($index);       
}

Редактировать Подготовлено выписка:

$serial_no = e($_POST['serial_no']);
$imei = e($_POST['imei']);
$entrycount = count($serial_no);
$sales_date = date("'Y-m-d H:i:s'");
$cus_id = "1";

$stmt = $db->prepare("INSERT INTO devices (serial_imei,serial_no,type_id,cus_id,sales_date) VALUES (?,?,?,?,?)");
for ($loop = 1; $loop <= $entrycount; $loop++) {
    $stmt->execute([$imei[$entrycount]], [$serial_no[$entrycount]], 1, $cus_id, $sales_date);
}
$pdo->commit();

1 Ответ

1 голос
/ 05 мая 2020

Ваша форма опубликует 2 массива, которые содержат значения serial и imei из вашей формы. После того, как вы убедились, что у них одинаковое количество записей, вам просто нужно l oop через один из них, чтобы извлечь значения из обоих массивов и вставить их в свою базу данных.

Поскольку ваш вопрос не был Включите все, что связано с вашим подключением к базе данных, я могу показать вам только те переменные, которые вы будете использовать для вставки данных в вашу БД. Используйте PDO и подготовьте вставку перед вводом l oop ( вот хорошая ссылка , чтобы начать работу с PDO и подготовиться).

$serial_no  = $_POST['serial_no'];
$imei       = $_POST['imei'];
$entrycount = count($serial_no);

for ($loop = 1;$loop <= $entrycount; $loop++) {

    // 
    // The values from your form will be in the following variables:
    //
    //
    // $serial_no[$entrycount]
    // $imei[$entrycount]
    //
    // The variables shown above are what you will have to insert into your DB.
    //
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...