如何使用“删除”按钮删除表格行

时间:2016-11-19 11:56:07

标签: php mysqli

对于我糟糕的英语和基本问题,我很抱歉。 我想问一下:

假设我已经显示了包含6列和值行的表。 在列的末尾,我有“选项标题”,行的选项为“删除按钮”。

像这样: 完整表

enter image description here

我想要的是当我单击“删除”按钮时,所选行上的所有值都将被完全删除。

像这样: 删除后

enter image description here

这是我的PHP和HTML代码:

<tbody>
  <tr>
        <?php
             while($getdata = mysqli_fetch_array($result))
             {
             echo"<td>".$getdata['x_id']."</td>";
             echo"<td>".$getdata['x_title']."</td>";
             echo"<td>".$getdata['x_track']."</td>";
             echo"<td>".$getdata['x_tag']."</td>";
             echo"<td>".$getdata['x_model']."</td>";
             echo'<td><img class="img-table-thumbnail" src="'.$getdata['x_thumb'].'"></td>';
             echo'<td><a type="button" class="btn btn-sm btn-default" href="'.$getdata['x_link'].' " target="_BLANK">VISIT</a></td>'; 
             echo'<td><form action="delete.php" method="post" enctype="multipart/form-data">
             <button type="submit" name="deleteData" class="btn-sm btn-primary"><i class="fa fa-times-circle" aria-hidden="true"></i></button>
             </form></td>';
             echo "</tr>";
             }

             //$result = mysqli_query($db_connect,$sql);

             $db_connect->Close();
             ?>
  </tbody>

和delete.php:

$id = (int)$_GET['id'];

$update = $db_connect->prepare("DELETE FROM $db_table WHERE id = ?");
$update->bind_param('i', $id);
$update->execute();
$update->close(); 


header("location:index.php");
?>

寻求帮助并提前感谢任何答案。

2 个答案:

答案 0 :(得分:0)

请尝试使用以下代码:

注意:我没有看到完整的代码,但我更改了错误的赋值/声明的代码。您可以随意调整代码

$id = (int)$_POST['deleteData'];

$update = $db_connect->prepare("DELETE FROM $db_table WHERE id = ?");
$update->bind_param('i', $id);
$update->execute();
$update->close(); 


header("location:index.php");
?>

Delete.php

public interface TuitionFeeCalculator {
    double calculateFee(double fee);
}

public class Fee70 implements TuitionFeeCalculator {
    @Override
    public double calculateFee(double fee) {
        return fee * (1-0.7);
    }
}

public class Fee50 implements TuitionFeeCalculator {
    @Override
    public double calculateFee(double fee) {
        return fee * (1-0.5);
    }
}

public class FeeNoDiscount implements TuitionFeeCalculator {
    @Override
    public double calculateFee(double fee) {
        return fee;
    }
}

public class Student {
    double tf;

    public Student(double tuitionFee) {
        this.tf = tuitionFee;
    }
}

public static void main(String[] args) {

    double averageMark = 90;
    double fee = 10000;

    TuitionFeeCalculator feeCalculator;
    if(averageMark >70) {
        feeCalculator = new Fee70();
    } else if (averageMark > 50) {
        feeCalculator = new Fee50();
    } else {
        feeCalculator = new FeeNoDiscount();
    }

    Student s = new Student(feeCalculator.calculateFee(fee));
}

答案 1 :(得分:0)

您在delete.php上使用POST作为requestmethod。这样做,你通过$ _POST ['id']得到你的id而不是$ _GET ['id']。但在您的情况下,您没有任何具有该值的表单控件。

参见$_POST$_GET

现在你有两个选择。

1。)通过将按钮重命名为“id”来更改表单,并将其value属性设置为$ getdata ['your_field_with_id']。在delete.php里面你不得不将$ _GET ['id']更改为$ _POST ['id'],因为你是通过POST发送formdata而不是GET。

echo '
<td>
    <form action="delete.php" method="post" enctype="multipart/form-data">
        <button type="submit" name="id" value="', $getdata['your_field_with_id'], '" class="btn-sm btn-primary">
            <i class="fa fa-times-circle" aria-hidden="true"></i> DELETE
        </button>
     </form>
</td>';

2。)使用以下代码

替换您的表单
echo '
<td>
    <a href="delete.php?id=', $getdata['your_field_with_id'], '" class="btn btn-sm btn-primary">
        <i class="fa fa-times-circle" aria-hidden="true"></i> DELETE
    </a>
</td>';

正如您所看到的,我删除了表单,并通过一个包含记录ID的简单链接替换它。

就个人而言,我更倾向于第一种解决方案。