如何将这个表单的所有值以数组形式提交,并在发布到SQL db时进行循环?

问题描述 投票:0回答:1

我有一个表单,里面有一些文本输入,我想在填写完后提交到db。我是一个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。

 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();
        }
    });

有一件很重要的事情要知道注意:这是一个动态表,所以当我按下回车键时,我实际上是在创建一个新的行(见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();
php html jquery html-table form-submit
1个回答
1
投票

你的表格将发布2个数组,其中包含以下数值 serialimei 的值。当你确认它们有相同数量的条目后,你只需要循环其中的一个数组,从两个数组中提取值并将它们插入到你的数据库中。

由于你的问题没有包含任何与你的数据库连接相关的内容,我只能向你展示你将使用的变量来将数据插入到你的数据库中。在进入循环之前,使用PDO并准备插入(这里有一个很好的参考 来让你开始使用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.
    //
}    
© www.soinside.com 2019 - 2024. All rights reserved.