我正在处理的这个页面有一个链接列表,我不想附加网址变量(.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
}
如您所见,正在为查询中的每个结果确定一个会话变量,我只是想弄清楚如何将其传递到下一页而不是页面上的最后一个变量。
如果您认为下一页中的代码是相关的,我可以提供它,但是,此页面上似乎一切正常,因此我认为专注于上面的代码是有意义的。
所以,请帮助我。
如果您不想向 url 添加变量,并且页面$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
它们)
而不是使用它:
$_SESSION['sessionname'] = $tour['EventID'];
使用这个:
$_SESSION['EventID'][$tour['EventID']] = $tour['EventID'];
或
$_SESSION['Events'][$tour['EventID']] = $tour;
如果您不管理 Cookie,则不需要会话名称。