![](/img/trans.png)
[英]How to stay on same page if a record delete from table in laravel 5.4?
[英]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> </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.