如何打印插入、更新或删除的成功消息?


How can i print a success message for insert,update or delete?

我有一个选择页,它显示表中的所有记录。对于每条记录,都有一个相应的链接用于编辑/删除记录。在这个页面中,我也给出了一个链接,打开另一个页面插入记录。

当我点击特定记录的删除链接时,执行delete.php,删除记录并将用户重定向到select页面

现在,我想在选择页面中显示一条成功消息(删除)(就在显示的记录下面)。如何将成功消息放置在显示的记录的正下方?

我应该使用mysqli_affected_rows并将此值传递给select页面。我如何传递此值?

我的delete.php文件看起来像这样:

include "connection.php";
$sql = "DELETE FROM `student`  
WHERE `id` = '$_GET[del_id]'";
mysqli_query($conn, $sql) or die ("Delete Error");
Header("Location: select.php");

一个简单的解决方案是使用会话。这允许您存储数据,以便在同一用户加载另一个页面时检索这些数据。下面的例子使用了这种方法

delete.php

<?php
//session must be started before anything is echoed to the browser
if(session_status()===PHP_SESSION_NONE) session_start();
...
mysqli_query($conn, $sql) or die ("Delete Error");
$_SESSION['message'] = "Record #$_GET[del_id] was successfully deleted"; 
Header("Location: select.php");

然后在任何页面上,您都可以检查是否有要显示的消息。如果是,检索它并清除消息存储(这样用户就不会每次打开一个新页面都看到相同的消息)。

select.php

<?php
//session must be started before anything is echoed to the browser
if(session_status()===PHP_SESSION_NONE) session_start();
...
//capture the message if it exists, or set $msg to null
if(!empty($_SESSION['message'])){
    $msg = $_SESSION['message'];
    unset($_SESSION['message']); //delete the message
}else{$msg = null;}

现在你可以在任何你想要的地方显示$msg,如果它不是空的。

回复你的评论:你问为什么会话必须在所有输出之前开始:

任何影响HTTP响应报头的设置必须在输出到浏览器之前出现,因为在HTTP协议中,报头在内容之前出现。默认情况下,会话依赖于标头(确切地说是Cookie标头)。从手册:

要使用基于cookie的会话,必须先调用session_start()输出任何内容到浏览器。