2017-09-23 107 views
0

在我的list.php页面上,用户可以从下拉列表中选择一个国家以显示所选SQL Server的数据。在此选择上,用户可以选择更新/编辑edit.php页面上的值。当用户在edit.php页面上提交更改时,它们被重定向到save.php页面,然后返回到初始list.php页面。我想知道是否可以使用SESSION变量来存储最初的国家/地区选择,以便用户在重定向到list.php时获得相同的选择。我试过使用session_start();,但无法使其正常工作。在不同页面的SESSION变量中下拉选定的值不会持续

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上,我得到下拉列表中的变量,但没有提交。

+1

'在session_start()'有被称为** **前的任何输出到浏览器 –

+0

我的推杆在顶部的session_start()代码的页面,在html标签之前,但它似乎工作时,我重定向到list.php不要选择国家'<?php session_start(); if(isset($ _ POST [“RegioSelect”])){ \t $ _SESSION ['RegioSelect'] = $ _POST [“RegioSelect”]; } ?>' –

+0

'$ _SESSION ['RegioSelect'] = $ _POST [“RegioSelect”];'在'list.php'上?否则'if()'不会被执行 –

回答

1

session_start()必须先出现在任何其他输出之前。不仅在你的php脚本的html之前,而且在任何浏览器输出之前。

PHP Documentation

要使用基于cookie的会话,在session_start()必须outputing什么浏览器之前调用。

<?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

如果窗体是在同一页上,请务必将

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

移动到顶部 -的<html>

前右下面session_start()否则你必须先重新加载页面 - 这可能不是你想要的

从那里,你也可以做到通过header()重定向到其他页面

+0

从save.php已经做了一个标题()重定向回到list.php,那里是我需要从提交以获得选择回来。尝试JavaScript,但onLoadSubmit()函数进入循环,所以实际上我需要这个函数只运行一次,但我没有得到它的工作。 –

相关问题