使用PHP,我正在构建一个Web表单,该表单将允许人们提交向其注册的网络设备的详细信息,这些详细信息保存在mysql数据库中。我想允许用户在同一表格上提交多个设备。
我需要收集的详细信息是
用户可能需要注册20个相同的设备,即相同的品牌和型号,唯一要更改的字段是mac地址。我没有要求用户提交20个单独的表单,而是使用“添加类似设备”按钮,而是使用JQuery创建了一个 new mac地址输入(数组类型)。
所有程序都按预期工作,但是我不确定我是否以“正确的方式”进行操作,因此我希望获得一些建议-我的代码在下面;
HTML
<form id="myForm" method="POST" action="">
<input id="make" name="make" type="text">
<input id="model" name="model" type="text">
<input id="mac[]" name="mac[]" type="text">
<!-- example of two dynamically added mac inputs
<input id="mac[]" name="mac[]" type="text">
<input id="mac[]" name="mac[]" type="text">
-->
<input id="submit" name="submit" type="submit">
</form>
<button class="add-similar" id="add-similar" type="button"></button>
JQuery
<script>
$(document).ready(function() {
var maxField = 10;
var addButton = $('.add-similar');
var html = '<input id="mac[]" name="mac[]" type="text">';
var x = 1;
$(addButton).on('click', function(e) {
if (x < maxField) {
x++;
$(wrapper).append(html);
}
});
});
</script>
PHP
if(isset($_REQUEST["submit"])){
$make = $_POST['make'];
$model = $_POST['model'];
$mac = $_POST['mac'];
for ($i = 0; $i < count($mac); $i++) {
// insert data into db
}
}
对于动态添加的每个其他mac地址输入,我需要在数据库中创建一个新的唯一记录。如果添加了两个动态mac地址,则数据库表应如下所示;
+----+-------+---------+--------------+
| id | make | model | mac |
+----+-------+---------+--------------+
| 1 | Apple | Macbook | 112233445566 |
+----+-------+---------+--------------+
| 2 | Apple | Macbook | 998877665544 |
+----+-------+---------+--------------+
| 3 | Apple | Macbook | 887766225533 |
+----+-------+---------+--------------+
我采用正确的方法吗?
答案 0 :(得分:1)
关于大容量插入:您需要构建sql语句,例如
INSERT INTO table(make, model, mac) VALUES("Apple", "Macbook", 123456),("Apple", "Macbook", 245678),("Apple", "Macbook", 345678);
您可以从下面的代码块中获得构建语句的想法。
注意:还请确保清理$ make,$ model,$ mac变量Might help
$make = $_POST['make'];
$model = $_POST['model'];
$mac = $_POST['mac'];
$length = count($mac);
$values = [];
for ($i = 0; $i < $length; $i++) {
$values[] = '("' . $make . '","' . $model . '",' . $mac[$i] .')';
}
$query = "INSERT INTO table(make, model, mac) VALUES". implode(",", $values);
答案 1 :(得分:0)
我为您提供解决方案。请使用Ajax和FormData。
首先,将类型更改为“提交到”按钮,然后将id设置到该按钮。
第二
window.close()