【问题标题】:PHP - Hold Session variable from Select Option box to every pagePHP - 将会话变量从选择选项框保存到每个页面
【发布时间】:2013-05-08 05:18:47
【问题描述】:

我似乎遇到了问题,经过数小时的搜索和不同的想法,我似乎无法想出这似乎是我的选择选项菜单的简单 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'];

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

【问题讨论】:

    标签: php session variables select options


    【解决方案1】:

    您应该在每个使用会话的 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;
    

    【讨论】:

    • 我当然有,我在选择框上发布它时遇到问题,因为刷新时它没有获取正确的数据。
    • 这可能行得通,一旦我们让后端重新启动并运行,我将实现它并尝试它。
    • 这不起作用,它不会保留它并不断刷新列表。
    【解决方案2】:

    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;
    }
    

    【讨论】:

    • 这实际上是有道理的,但我遇到了一个问题,即会话没有保持并且每次都会重置。从 JSON 中提取,我觉得它每次都令人耳目一新,而不是保持原状。
    • 这不起作用,抱歉这么晚才回复。它不断刷新选择列表中的值,现在我有两个列表的更大困境。我必须选择一个,然后填充第二个列表,现在我需要保存两者的变量。
    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2016-04-20
    • 1970-01-01
    相关资源
    最近更新 更多