在php中动态更改会话变量?

时间:2015-11-15 20:57:00

标签: php

我尝试在发布之前搜索网站,但没有发现任何相关信息。如果我弄错了,请原谅我。我正在做的是制作一个日历系统。每天都填充适当的事件和时间,我在<td>中有一个链接指向另一个php页面,以获得更长的事件描述。我在一个函数中有一个foreach循环,它在从数据库获取查询后创建日历。我将长描述行分配给会话变量,然后将其打印在description.php页面中。我的问题是会话变量在循环的每次迭代期间都没有改变。这可能是这样做的吗?希望我能引用一个变量来显示信息,但我做错了。任何建议表示赞赏!

calendar.php中的代码

if(isset($events[$event_day])) {
                foreach($events[$event_day] as $event) {
                    $calendar.= '<div class="event">'.$event['title'].'<br>'.$event['time'].'<br>'.$event['shortDesc'].'<br><a href="/description.php">More</a></div>';
                    $_SESSION['desc']= $event['longDesc'];
                }
            }

description.php中的代码

<?php

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

include  ('../dbinfo.php');
session_start();

$db=mysqli_connect($dbhostname,$dbuser,$dbpass,$dbname[0]); 

print($_SESSION['desc']);
//print("<br><br>");
//print("Time:");

mysqli_close($db);//Close the DB Connection

?>

如果需要更多代码来查看我想要完成的内容,我将编辑此帖子!是的,我在日历页面上有session_start()。会话正在打印,但不会针对每个不同的event_date进行更新。

1 个答案:

答案 0 :(得分:1)

试试这个:

<?php
if (isset($events[$event_day])) {
    $_SESSION['desc'] = [];
    foreach ($events[$event_day] as $event) {
        $calendar .= '<div class="event">' . $event['title'] . '<br>' . $event['time'] . '<br>' . $event['shortDesc'] . '<br><a href="/description.php">More</a></div>';
        $_SESSION['desc'][] = $event['longDesc'];
    }
}

这里的代码是在向数组添加元素之前为$ _SESSION ['desc']分配一个空数组。您说“运算符不支持字符串”的错误是因为$ _SESSION ['desc']不是数组。