如何打印成功消息以进行插入,更新或删除?

时间:2016-08-17 16:11:03

标签: php

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

当我点击特定记录的删除链接时,会执行 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");

1 个答案:

答案 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()   向浏览器输出任何内容。