POST多个动态元素的正确方法

时间:2018-03-03 08:27:14

标签: php html post mysqli

我正在尝试动态地从表单中发布数据,允许用户在提交之前删除一些数据行。 enter image description here

要发布数据,我使用类似名称和下面的变量编号将名称分配给输入字段:

 <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,其中一个字段将作为空白插入,最后一个字段不会插入,如下图所示:

enter image description here

发布此类数据并将其插入数据库的正确方法是什么?

注意:删除行时需要使用名称no$n,因此无法删除。

0 个答案:

没有答案