我正在一个网站上工作,用户可以输入他欠朋友的钱。在一个页面上,用户可以看到他到目前为止所做的所有委托,并且应该能够删除它们。所有的声明都插入到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>
</button>
</li>
</form>
<?php }
}
if ($isEmpty) { ?>
<li class="list-group-item">No debt!</li>
<?php
} ?>
</ul>
一个债务条目具有以下值:
每个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开发,所以如果有兴趣我可以邀请某人。
答案 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属性的输入元素将被传递到下一页。