我有一个while循环,在表格中显示我的数据库列和行。
我想制作一个可以删除特定MySQL行的按钮,但不幸的是我无法选择删除所有行中的哪一行只是因为我使用" while loop"以HTML格式显示我的数据库内容。
提供图片以便更好地了解我想要做的事情:
所以是的,我希望在单击绿色按钮时 - 发送MySQL查询以删除此行(存在于我的数据库中)。
提供代码:
<?php
//CONECT TO MYSQL
include 'database.php';
//GET VALUES
$sql = "SELECT * FROM amountcontainer";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
//Table headlines - NOT A PHP
echo "<table class='moneytable'>
<tr>
<th style='background-color: #2d323a; color: white;'>Date</th>
<th style='background-color: #2d323a; color: white;'>Amount</th>
<th style='background-color: #2d323a; color: white;'>Reason</th>
</tr>";
// output data of each row
while($row = $result->fetch_assoc())
{
//RED //Make statement of amount red if it has a " - "
if(strpos($row['amount'],'-') !== false)
{
echo
"
<tr>
<th style='font-weight: normal;background-color: #ff9999;' class='row-time'>" . $row['time'] . "</th>
<th style='font-weight: normal;background-color: #ff9999;' class='row-amount'>" . $row['amount'] . "</th>
<th style='font-weight: normal;background-color: #ff9999;' class='row-reason'>" . $row['reason'] . "</th>
</tr>
";
}
//NORMAL //Make statement of amount normal if it doesn't have a " - "
else
{
echo
"
<tr>
<th style='font-weight: normal;' class='row-time'>" . $row['time'] . "</th>
<th style='font-weight: normal;' class='row-amount'>" . $row['amount'] . "</th>
<th style='font-weight: normal;' class='row-reason'>" . $row['reason'] . "</th>
</tr>
";
}
}
echo "</table>";
}
else
{
echo "0 results";
}
答案 0 :(得分:1)
这听起来像ajax的地方。下面是一个粗略的例子,可能会给你一个很好的起点。
<?php
while($row = $result->fetch_assoc()) {
$isNegative = strpos($row['amount'],'-') !== false;
echo "<tr class='record' data-id=\"{$row["id"]}\">";
//Use ternary operator & css classes
echo "<td class='standard-record ".$isNegative ? "color-red" : "" ."''>{$row["record"]}</td>";
echo "</tr>";
}
?>
<script>
$(".record").click(function(){
var request = {
id: $(this).data("id")
};
$.post( "delete-record.php", request, function(data){
$(this).remove();
});
});
</script>
答案 1 :(得分:1)
更改此
if(strpos($row['amount'],'-') !== false) # wrong way
到这个
if($row['amount'] < 0) # detecting negative numbers
答案 2 :(得分:1)
首先,只对表头使用<th>
个元素。对于实际数据单元格,请使用<td>
元素。
要允许删除单个数据库行,您可以在表中包含链接。在创建表行的循环中:
<tr>
<td>" . $row['time'] . "</td>
<td>" . $row['amount'] . "</td>
<td>" . $row['reason'] . "</td>
<td><a href='?deleteId=$row[keyID]'>Delete</a></td>
</tr>
在这种情况下,当选择“删除”链接时,它会使用$ _GET变量调用相同的脚本:“deleteId”可以测试,如果找到,则执行删除行。您还可以将表格嵌入到html表单中,并将提交按钮添加到每行的单元格中,并将提交的值设置为要删除的行ID。
答案 3 :(得分:1)
您需要添加额外的
<th style='font-weight: normal;' class='row-reason'><a class="crossBtn" href="?del_id=".$row['id']."> </a></th>
获取del_id并删除此特定记录。