我正在建立一个非常基本的论坛,能够评论帖子。如您所见,此代码显示了通知,当注释作者等于登录用户时,它应显示删除按钮以删除注释。问题是,当我点击删除按钮时,它会删除帖子上的所有评论,而不仅仅是评论旁边的删除按钮。
我的评论' table具有列id,discid,comment_username,comment和comment_time,其中discid列来自' comments'指的是表格中的id列' dicussions'
<?php
$id = mysql_real_escape_string($_GET['id']);
$query = 'SELECT * FROM discussions WHERE `id` = '.$id.' LIMIT 1';
$result = mysql_query($query);
$row = mysql_fetch_array($result);
?>
<h2><? echo $row['category'] . $row['topic']; ?></h2>
<div>Posted on <? echo $row['date_time']; ?> by <? echo $row['username'] ?></div>
<div><? echo $row['discussion']; ?></div>
<?
$result_comments = mysql_query("SELECT * FROM comments WHERE discid = $id ORDER BY comment_time ASC");
while ($record = mysql_fetch_array($result_comments))
{
?>
<form action="" method="POST" >
<? echo $record['comment_username']. $record['comment_time'] ?>
<!-- if comment from logged in user, show delete option -->
<?
if ($record['comment_username'] == $log_username)
{
echo '<span><button title="Delete comment" value="' . $record['id'] .'" name="deletecommentbutton" type="submit">X</button></span>';
}
if(isset($_POST['deletecommentbutton']))
{
$commentid = $record['id'];
$result_delete = mysql_query("DELETE from comments WHERE id='$commentid'");
header("Location: url/discussion_view.php?id=".$_GET['id']."");
}
?>
<div><? echo $record['comment'] ?></div></form>
<?php } ?>
答案 0 :(得分:4)
首先,您不应再使用mysql_*
函数了。它被弃用了。
相反,您可以使用PDO。
关于您的问题,对于给定帖子的每条评论,语句if(isset($_POST['deletecommentbutton']))
都是true
,因为您没有检查所选评论的ID。
您应该将删除代码移到循环外部,并仅对选定的ID执行它。