使用PHP删除数据库中的li条目

时间:2016-12-30 15:41:13

标签: php jquery html mysql ajax

我正在一个网站上工作,用户可以输入他欠朋友的钱。在一个页面上,用户可以看到他到目前为止所做的所有委托,并且应该能够删除它们。所有的声明都插入到DB中。对于本概述页面,我使用以下结构:

<ul class="list-group">
    <?php 
    $isEmpty = true;
    while ($data = mysql_fetch_array($res)) {
        if ($data['isDebt'] == 0) {
            $isEmpty = false; ?>
            <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" autocomplete="off">
                <li class="list-group-item" name="Debt_ID" value="<?php echo $data['Debt_ID'] ?>"><span class="badge"><?php echo $data['value']; ?></span><?php echo $data['name']; ?>
                    <button name="delete" type="submit" id="delete" class="btn btn-xs btn-danger pull-right">
                        <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>&nbsp;
                    </button>
                </li>
            </form>
  <?php }
    } 
    if ($isEmpty) { ?>
        <li class="list-group-item">No debt!</li>    
    <?php 
    } ?>
</ul>

一个债务条目具有以下值:

  • Debt_ID(数字)
  • 姓名(如&#34;来自jack&#34的披萨;)
  • 价值(价格。例如&#34; 10&#34;)

每个li元素的按钮应通过Debt_ID删除DB中的条目。到目前为止,我已经使用了以下SQL语句:

DELETE FROM Debt WHERE Debt_ID='$debt_ID';

在PHP中它看起来像这样:

if (isset($_GET['delete'])) {
    $debt_ID = trim($_POST['Debt_ID']);
    $res = mysql_query("DELETE FROM Debt WHERE Debt_ID='$debt_ID';");

    if ($res) {
        $errTyp = "success";
        $errMSG = "Successfully deleted";
    } else {
        $errTyp = "danger";
        $errMSG = "Error occured";
    }
 }

我现在的问题是我无法获得我在li元素中使用PHP输入的Debt_ID。有谁知道更好的方法或我做错了什么? 我正在使用Cloud9开发,所以如果有兴趣我可以邀请某人。

2 个答案:

答案 0 :(得分:1)

当您加载所有债务时,您可以使用select语句执行此操作并循环遍历结果集。在循环中,您可以将id放在每个li元素的隐藏输入中:

$sql = "SELECT debt_id, name, value FROM debts WHERE user_id = " . $user_id;
$result = $conn -> query($sql);

if ($result -> num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo '<li>
                  <span>' . $row["name"] . '</span>
                  <span>' . $row["value"] . '</span>
                  <input type="hidden" value="' . $row['debt_id'] . ' name="id-to-delete">
              </li>';
    }
} else {
    echo "no results";
}

delete.php文件应包含:

<?php  
    if (isset($_POST['id-to-delete'])) {
        $idToDelete = $_POST['id-to-delete'];

        // sql to delete a record
        $sql = 'DELETE FROM debts WHERE debt_id=' . $idToDelete;

        if ($conn->query($sql)) {
            echo "Record deleted successfully";
        } else {
            echo "Error deleting record: " . $conn->error;
        }
    }
?>

答案 1 :(得分:0)

在表单元素之后添加

<input type="hidden" name="Debt_ID" value="<?php echo $data['Debt_ID'] ?>">

然后从li元素中删除相同的信息。

提交表单时,带有name属性的输入元素将被传递到下一页。