我有一个选择页面,它显示了一个表中的所有记录。对于每个记录,都有一个相应的链接用于编辑/删除记录。在这个页面中,我还给出了一个打开的链接另一页用于插入记录。
当我点击特定记录的删除链接时,会执行 delete.php ,删除记录并将用户重定向到选择页面
现在,我想在选择页面中显示成功消息(删除)(正好在显示的记录下方)。如何将成功消息放在显示的记录下方?
我应该使用 mysqli_affected_rows 并将此值传递给选择页面。如何传递此值?
我的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");
答案 0 :(得分:3)
一个简单的解决方案是使用会话。这些允许您存储在同一用户加载另一页时可以检索的数据。以下示例使用此方法
<强> 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;}
现在,您可以在HTML中的任何位置显示$msg
,如果它不为空。
回复您的评论:您问为什么必须在所有输出之前启动会话:
任何影响HTTP响应标头的设置必须在输出到浏览器之前进行,因为在HTTP协议中,标头位于内容之前。默认情况下,会话依赖于标头(确切地说Cookie
标头)。 From the manual:
要使用基于cookie的会话,必须先调用session_start() 向浏览器输出任何内容。