当我删除记录时,如何保持同一页面?

时间:2014-04-23 09:18:29

标签: php mysql

我正在开发一个评论系统。现在很简单。但我有点卡住了。

我有一个可以预订的房间。对于每个房间,您都可以向他们提交评论。

当我点击我访问房间的评论时,我发送了房间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>&nbsp;</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会很好。

2 个答案:

答案 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'] . "'>

并在创建评论列表之前删除评论