我正在编码我的网络游戏中处理邮件系统的部分,以便玩家可以在游戏中进行交流。在您的收件箱中,您需要能够删除和阅读邮件,所以我放了一个删除按钮,然后单击它,如果它得到“ deletemsg”,它将mail_id放入一个函数中,该函数将从数据库。这很好用,但是当您删除除最上面的那条消息以外的所有消息时,它将不起作用。顶部消息只是位于此处,如果您单击其删除按钮,则页面刷新后该消息仍然保留。
因此,如果您有三个消息,则消息#1,#2和#3。假设#1位于收件箱的顶部,然后是#2和#3。如果您按下#3和#2的删除按钮,则消息可以很好地删除,但是出现消息#1时,它什么也没做。
我尝试查看代码中的错误,但是我不知道为什么除了用户收件箱中的最后一条消息外,其他所有消息都不会删除。
<?php
$query = "SELECT * FROM mail WHERE receiver='$char_name' ORDER BY time DESC;";
$result = mysqli_query($db, $query) or die(mysqli_error($db));
while($row = mysqli_fetch_array($result)) {
$mail_id = $row['mail_id'];
echo("<tr>");
echo("<td>" . date("F j, Y, g:i a", $row['time']));
echo("<td>" . $row['sender']);
echo("<td>" . $row['subject']);
echo("<td><a href='mail-read.php?mail_id=" . $row['mail_id']. "' class='btn btn-sm btn-outline-dark'>Read</a>");
echo("
<form action='mail.php' method='get'>
<button class='btn btn-danger btn-sm' name='deletemsg'>Delete</button></tr></td>
</form>
");
}
if(isset($_GET['deletemsg'])) {
delete_mail($mail_id);
echo("<div class='alert alert-success'><strong>Successfully deleted message!</strong></div>");
}
?>
function delete_mail($mail_id) {
global $db;
$query = "DELETE FROM mail WHERE mail_id='$mail_id'";
mysqli_query($db, $query) or die(mysqli_error($db));
return 1;
}