簡體   English   中英

當我刪除記錄時,如何保持同一頁面?

[英]How can I stay on the same page, when I delete a record?

我正在開發一個評論系統。 現在很簡單。 但我有點卡住了。

我有一個可以預訂的房間。 對於每個房間,您都可以向他們提交評論。

當我點擊我訪問房間的評論時,我發送了房間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會很好。

只需將刪除“按鈕”鏈接到普通評論頁面,然后單獨刪除GET或POST值(而不是id),然后在評論頁面的開頭設置。

例如:yourpage.com/comments.php?delete=14

if (isset($_GET['delete']))
{
    $comment->deleteComment($_GET['delete']);
}

但是(!)真的要知道,你這樣做的方式,允許任何用戶通過輸入其ID刪除任何評論,這是不安全的!

正如Rakesh建議的那樣,你可以在deleteComment函數中使用header()函數,或者只是鏈接到同一頁面但是要刪除注釋id

代替:

href='deleteComment.php?id=" . $row ['id'] . "'>

做:

href='?id=" . $row ['delete_comment_id'] . "'>

並在創建評論列表之前刪除評論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM