创建会话,建立变量并将变量传递到下一页

时间:2014-01-23 13:52:38

标签: php session session-variables

我正在处理的这个页面有一个链接列表,我不想附加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       
}

正如您所看到的,正在为查询中的每个结果确定一个会话变量,我只想弄清楚如何将其传递到下一页而不是页面上的最后一个变量。

如果您认为下一页的代码是相关的,我可以提供它,但是,一切似乎都在这个页面上工作,所以我认为专注于上面的代码是有意义的。

所以,请帮助我。

2 个答案:

答案 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,则不需要会话名称。