![](/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.