我有一个选择页,它显示表中的所有记录。对于每条记录,都有一个相应的链接用于编辑/删除记录。在这个页面中,我也给出了一个链接,打开另一个页面插入记录。
当我点击特定记录的删除链接时,执行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()输出任何内容到浏览器。