我正在尝试动态地从表单中发布数据,允许用户在提交之前删除一些数据行。
要发布数据,我使用类似名称和下面的变量编号将名称分配给输入字段:
<form method=post>
<input type='hidden' name='mid' value='<? echo $game ?>'>
<table>
<?
$sum = 0;
$n = 1;
foreach ($results as $result) {
echo "<tr class='no$n'><td id='no$n'><button class='btn btn-sm btn-danger'>Delete</button></td><td>$result</td><td><input type='hidden' name='no$n' value='$result'><input type='number' class='add form-control' name='pt$n' value='$pt' onkeyup='total();' onKeyPress='return KeyEvent(event);' required></td></tr>";
$sum+= $pt;
?>
<script>
$(document).ready(function(){
$("#<? echo "no$n" ?>").click(function(){
$("tr").remove(".<? echo "no$n" ?>");
total();
});
});
</script>
<?
$n++;
}
?>
<tr><td></td><td>Total:</td><td><div id="sum"><? echo $sum; ?></div></td></tr>
</table>
<input type="submit" name="addmpanna" class="btn btn-lg btn-block btn-c">
</form>
</div>
</div>
导致输入字段名称如下:
<tr class='no1'><td id='no1'><button class='btn btn-sm btn-danger'>Delete</button></td><td>123</td><td><input type='hidden' name='no1' value='123'><input type='number' class='add form-control' name='pt1' value='45' onkeyup='total();' onKeyPress='return KeyEvent(event);' required></td></tr><script>
$(document).ready(function(){
$("#no1").click(function(){
$("tr").remove(".no1");
total();
});
});
</script>
<tr class='no2'><td id='no2'><button class='btn btn-sm btn-danger'>Delete</button></td><td>120</td><td><input type='hidden' name='no2' value='120'><input type='number' class='add form-control' name='pt2' value='45' onkeyup='total();' onKeyPress='return KeyEvent(event);' required></td></tr><script>
$(document).ready(function(){
$("#no2").click(function(){
$("tr").remove(".no2");
total();
});
});
</script>
我发布此数据并使用以下代码将其插入数据库:
$addmpanna = spost($db, "addmpanna");
$mid = spost($db, "mid");
if(!empty($addmpanna)) {
$count = count($_POST);
$count = $count/2;
for($i = 1;$i < $count;$i++) {
$no[$i] = spost($db, "no$i");
$pt[$i] = spost($db, "pt$i");
$sql = "INSERT INTO ank (gid, no, points) VALUES ('$gid', '$no[$i]', '$pt[$i]')";
$res = mysqli_query($db, $sql);
}
}
现在,问题是 - 每当我删除第一行和最后一行之间的一个字段时。
例如:
如果我删除130
,其中一个字段将作为空白插入,最后一个字段不会插入,如下图所示:
发布此类数据并将其插入数据库的正确方法是什么?
注意:删除行时需要使用名称no$n
,因此无法删除。