我正在处理的这个页面有一个链接列表,我不想附加url变量(.html?id = 12345),所以我认为第一次尝试会话可能值得一试。
该页面对数据库进行查询,获取行,然后在列表中显示它们。我遇到的问题是会话变量被while结果中的下一行覆盖。因此,无论用户点击什么,会话都会在页面上显示最后一个变量。
我认为这是代码放置的问题(重新排列),但我没有运气,但要将正确的变量正确传递到下一页。
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
$tourQuery = mysql_query("SELECT * table WHERE ID = '".$page['main_id']."' AND DateTime >= CurDate() ORDER BY DateTime ASC");
$tourcount = mysql_num_rows($tourQuery);
while($tour = mysql_fetch_array($tourQuery))
{
$_SESSION['sessionname'] = $tour['EventID'];
?>
<div class="schedule-row vevent" style="overflow:auto;">
<div class="schedule-button">
<a class="schedlink url" href="<?=$pg['request']?>.html">
View
</a>
</div>
<br clear="all" />
</div>
<?php
}
正如您所看到的,正在为查询中的每个结果确定一个会话变量,我只想弄清楚如何将其传递到下一页而不是页面上的最后一个变量。
如果您认为下一页的代码是相关的,我可以提供它,但是,一切似乎都在这个页面上工作,所以我认为专注于上面的代码是有意义的。
所以,请帮助我。
答案 0 :(得分:3)
如果您不想在网址中添加变量,并且循环中的页面$pg['request']
和值$tour['EventID']
之间没有关系,那么将用户发送到下一个的唯一方法具有相应值的页面,是使用表单,发布并添加$tour['EventID']
作为(隐藏)表单字段。
类似的东西:
<form action="<?php echo $pg['request']; ?>" method="post">
<input type="hidden" name="id" value="<?php echo $tour['EventID']; ?>">
<input type="submit" value="View">
</form>
(您可能需要对变量进行编码/转换,以便能够echo
将它们排除在外而不会出现问题)
答案 1 :(得分:0)
而不是使用它:
$_SESSION['sessionname'] = $tour['EventID'];
使用此:
$_SESSION['EventID'][$tour['EventID']] = $tour['EventID'];
或
$_SESSION['Events'][$tour['EventID']] = $tour;
如果您不管理Cookie,则不需要会话名称。