为什么PHP函数中的HTML在视图源中不可见

时间:2018-09-28 23:20:37

标签: php function session

我要编辑客户端状态时运行的功能。

// 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']);
}

1 个答案:

答案 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>';
            }