在不同页面的SESSION变量中下拉选定值不会持续存在

时间:2017-09-23 21:04:05

标签: php html sql-server session-variables

在我的list.php页面上,用户可以从下拉列表中选择一个国家/地区,以显示SQL服务器的选择数据。在此选择中,用户可以选择更新/编辑edit.php页面上的值。当用户在edit.php页面上提交更改时,会将其重定向到save.php页面,然后再返回到初始list.php页面。我想知道是否可以使用SESSION变量来存储初始国家/地区选择,以便用户在重定向到list.php时获得相同的选择。我曾尝试使用session_start ();,但无法让它发挥作用。

EDITED

这是我的代码:

list.php的顶部:

<?php session_start(); ?>

形式:

<form name="frmname" id="frmid" action="list.php" method="POST" >
<h4>From: <input type="text" size="6" name="start_date" pattern="[0-9/]+" 
placeholder=" 00/00/0000" />
To: <input type="text" size="6" name="end_date" pattern="[0-9/]+" 
placeholder=" 00/00/0000" />
<select name="RegioSelect" onchange="this.form.submit();" ><option><?php echo $_SESSION['RegioSelect']; ?></option>

下拉列表填充:

$query1 = "SELECT DISTINCT CountryRegionName FROM tKein23 ORDER BY CountryRegionName";
$stmt1 = $conn->query( $query1 );
while ($data = $stmt1->fetch(PDO::FETCH_ASSOC)){
    echo '<option value="'.$data['CountryRegionName'].'">';
    echo $data['CountryRegionName']; 
    echo "</option>";
}

然后我尝试了SESSION_START()

<h4><input type="submit" value="Show" name="Selection" />
</select>
</form>

<?php

    if(isset($_POST["RegioSelect"])){
        $_SESSION['RegioSelect'] = $_POST["RegioSelect"];
    }

现在,在其他页面上,我确实得到了$_SESSION['RegioSelect']变量。在list.php,我在下拉列表中获取变量,但没有提交。

2 个答案:

答案 0 :(得分:1)

在任何其他输出之前,

session_start()必须首先出现。不仅在PHP脚本上的html之前,而且在任何浏览器输出之前。

PHP Documentation

  

要使用基于cookie的会话,必须在向浏览器输出任何内容之前调用session_start()。

<?php session_start(); ?>

<html>
    <body>
        ...
        ...
        <h4><input type="submit" value="Show" name="Selection" />
        </select>
        </form>

<?php

    if (isset($_POST["RegioSelect"]))
        $_SESSION['RegioSelect'] = $_POST["RegioSelect"];

答案 1 :(得分:1)

如果表单在同一页面上,请务必移动

if (isset($_POST["RegioSelect"]))
    $_SESSION['RegioSelect'] = $_POST["RegioSelect"];

到右上角低于 session_start()之前 <html>

否则你必须先重新加载页面 - 这可能不是你想要的

从那里开始,您还可以通过header()

重定向到其他网页