PHP - 将“选择选项”框中的“会话”变量保存到每个页面

时间:2013-05-14 03:10:31

标签: php session variables select options

我似乎遇到了问题,经过几个小时的搜索和弄乱不同的想法,我似乎无法想出这似乎是我的选择选项菜单中的简单PHP会话问题。

我想要做的只是简单地从下拉列表中选择的酒店名称,直到它被更改,这适用于每一页。所以我想,是的,我们可以使用Sessions。似乎不能很好地工作,因为它不断刷新数据。这是我的代码,也许你们其中一个人可以提出解决方案。我真的很感激!

我们正在使用json文件填充我们获得的菜单,使用CURL调用数据然后解码json。

以下是下拉代码:

<select id="hotelSelected" name="hotelSelected">
<?php
sort($hotelName);
foreach($hotelName as $value):
echo '<option value="'.$value.'"'.ucfirst($value).'</option>';
endforeach; ?>
</select>

然后我尝试通过这样做来创建一个会话:

$_SESSION['hotelName'] = $hotelName;

现在我需要这个会话来继续每一页。并且可能通过使用这个来回显某些页面:

echo $_SESSION['hotelName'];

感谢任何帮助或将我重定向到可以解决我的问题的论坛。谢谢你们!

2 个答案:

答案 0 :(得分:0)

您应该在每个使用会话的PHP文件的顶部使用session_start();。 此外,如果您的表单包含SELECT标记,则在提交表单后,您应使用$_POST['hotelSelected']来获取用户选择的选项的值。

编辑1:

    <select id="hotelSelected" name="hotelSelected">
    <?php
    sort($hotelName);
    foreach($hotelName as $key=>$value):
    echo '<option value=($_SESSION['hotelname'][$key]):"'.$_SESSION['hotelname'][$key].'"'.ucfirst($_SESSION['hotelname'][$key]).'?"'.$value.'"'.ucfirst($value).'</option>';
    endforeach; ?>
    </select>
<?php
    $_SESSION['hotelname']=$hotelname;

答案 1 :(得分:0)

HTML

<select id="hotelSelected" name="hotelSelected" onchange="run(this)">
<?php
    sort($hotelName);
    foreach($hotelName as $value):
        echo '<option value="'.$value.'"'.ucfirst($value).'</option>';
    endforeach; 
?>
</select>

的JavaScript

function run(sel) {
    var i = sel.selectedIndex;
    if (i != -1) {
        $.post('updatesession.php', {id:i}, function(){
        alert('Session Updated!');
    });
    }
}

updatesession.php

if(isset($_POST['id'])){
    session_start();
    $_SESSION['hotelName']=id;
}