我要编辑客户端状态时运行的功能。
// deletes (sets inactive) client
function setClientStatus($client) {
if ($_GET['action'] == "setinactive") {
//database functions
$sql = 'UPDATE clients SET active="0" WHERE id="'. $client .'"';
$result = query($sql);
confirmQuery($result);
//set message to user to display
$_SESSION['error'] = false;
$msgs[] = "Client was set to inactive and removed from the list!";
$_SESSION['userMsg'] = $msgs;
}
if ($_GET['action'] == "setactive") {
//database functions
$sql = 'UPDATE clients SET active="1" WHERE id="'. $client .'"';
$result = query($sql);
confirmQuery($result);
//set message to user to display
$_SESSION['error'] = false;
$msgs[] = "Client was successfully restored!";
$_SESSION['userMsg'] = $msgs;
}
//display clients page with changes made
redirect('?page=clients');
}
显示消息的功能。
//function that shows message and styles accordingly
function message($msgs) {
if(!empty($msgs)) {
foreach ($_SESSION['userMsg'] as $msg) {
if ($_SESSION['error'] == false) {
echo '<div class="noError">'.$msg.'</div>';
} else {
echo '<div class="error">'.$msg.'</div>';
}
}
}
unset($_SESSION['userMsg']);
unset($_SESSION['error']);
echo "hello";
}
这是我在页面中称呼它的地方。...
div class="pageContainer">
<?php
//display messages
message($_SESSION['userMsg']);
?>
</div>
现在,当一切运行完毕后,我选择编辑和客户端状态(或添加客户端,编辑客户端,因为它们都具有相同的消息部分,只是带有不同的消息),我可以看到屏幕上显示的消息。我有一个JavaScript脚本,它将在5秒后隐藏消息,但不会隐藏。查看页面源代码后,我注意到代码部分不可见。再次,我可以清楚地看到它应该出现的消息“客户端已设置为非活动状态,并已从列表中删除!” (或设置为要显示的任何消息),但不会在视图源html中显示。
pic of page loaded with message
这是视图源.....
<div class="pageContainer">
<div>
**已更新**
这个小示例脚本呈现了html,但是我上面的脚本没有...
function setError() {
$error[] = "Password field is to short";
$_SESSION['userMsg'] = $error;
//return $_SESSION['msg'];
}
function message($errors){
if(!empty($errors)) {
foreach ($_SESSION['userMsg'] as $error) {
echo $error.'<br>';
}
}
unset($_SESSION['userMsg']);
}
答案 0 :(得分:0)
如果我说对了,您想显示$msgs
,那么为什么要迭代$_SESSION['userMsg']
?
$_SESSION['userMsg']
可能为null或为空。如果要显示$msgs
,只需对其进行迭代。然后,如果确实需要,可以添加到会话中。在代码中,您总是在函数末尾取消设置$_SESSION['userMsg']
,然后可能始终为null。我没看到这里需要$_SESSION['userMsg']
:
//function that shows message and styles accordingly
function message($msgs) {
if(!empty($msgs)) {
foreach ($msgs as $msg) {
if ($_SESSION['error'] == false) {
echo '<div class="noError">'.$msg.'</div>';
} else {
echo '<div class="error">'.$msg.'</div>';
}
}
}
unset($_SESSION['error']);
echo "hello";
}
已更新
阅读您的评论后,这与javascript问题有关。您应该在<div>
中添加ID才能正常工作。
if ($_SESSION['error'] == false) {
echo '<div id="noError" class="noError">'.$msg.'</div>';
} else {
echo '<div id="error" class="error">'.$msg.'</div>';
}