我正在开发一个评论系统。现在很简单。但我有点卡住了。
我有一个可以预订的房间。对于每个房间,您都可以向他们提交评论。
当我点击我访问房间的评论时,我发送了房间ID和URL,您可以通过以下代码看到:
if (isset ( $_GET ['id'] )) {
$room_id = $_GET ['id'];
}
$user_id = $_SESSION ['id'];
if ($_POST){
extract($_POST);
$register = $comment->createComment($room_id, $user_id, $comments);
}
?>
<div id="comments">
<?php echo $comment->getComments($room_id); ?>
</div>
<div id="comment-form">
<h3>New Comment</h3>
<form action="" method="post">
<table>
<tr>
<td><textarea name="comments" cols="40" rows="8"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Submit Comment" /></td>
</tr>
</table>
</form>
</div>
要获得我的评论,请拨打我的函数getComments($room_id)
public function getComments($room_id) {
$str = "SELECT * FROM comments WHERE room_id = $room_id";
$result = $this->db->mysqli->query ($str);
if ($result->num_rows > 0) {
$string = "<table><thead><tr><th>#ID</th><th>Room id</th><th>user id</th><th>comments</th><th>Timestamp</th></tr></thead><tbody>";
while ( $row = $result->fetch_assoc () ) {
$string .= "<tr><td>" . $row ['id'] .
"</td><td>" . $row ['room_id'] .
"</td><td>" . $row ['user_id'] .
"</td><td>" . $row ['comments'] .
"</td><td>" . $row ['timestamp'] .
"</td><td>[<a href='deleteComment.php?id=" . $row ['id'] . "'>Delete</a>]</td> ";
}
$string .= "</tbody></table>";
return $string;
}
}
正如您所看到的,我创建了一个指向deleteComment.php的链接,并发送了我要删除的注释的链接。
在该页面上,我调用了一个新函数:
if ($comment->deleteComment($_GET['id']))
{
echo "comment deleted"
}
else
{
echo "Something went wrong.s";
}
最后,我的删除评论功能:
public function deleteComment($id)
{
$sql = "DELETE FROM comments WHERE id = ?";
if (!$result = $this->db->mysqli->prepare($sql))
{
return false;
}
if (!$result->bind_param('i', $id))
{
return false;
}
return $result->execute();
}
所有这些都有效。但我的问题是:如何删除评论并仍保留在显示评论的原始页面上,而不是转到deleteComments.php页面?我不是在寻找一个AJAX解决方案。如果我能坚持使用PHP会很好。
答案 0 :(得分:1)
只需将删除“按钮”链接到普通评论页面,然后单独删除GET或POST值(而不是id),然后在评论页面的开头设置(如果已设置)。
例如:yourpage.com/comments.php?delete=14
if (isset($_GET['delete']))
{
$comment->deleteComment($_GET['delete']);
}
但是(!)真的要知道,你这样做的方式,允许任何用户通过输入其ID来删除任何评论,这是不安全的!
答案 1 :(得分:1)
正如Rakesh建议的那样,您可以在deleteComment函数中使用header()函数,或者只是链接到同一页面,但要删除注释ID
而不是:
href='deleteComment.php?id=" . $row ['id'] . "'>
做的:
href='?id=" . $row ['delete_comment_id'] . "'>
并在创建评论列表之前删除评论