如何将此表单的所有值作为数组提交,并在发布到SQL数据库时循环



我有一个包含一些文本输入的表单,我想在填写完这些文本输入后提交给数据库。我是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();
}
});

需要知道的一件非常重要的事情:这是一个动态表,所以当按下enter键时,我实际上是在创建一个新行(请参阅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();

您的表单将发布两个数组,其中包含表单中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.
//
}    

最新更新