2013-06-24 70 views
0

我创建了一个网站,当用户登录时,他指定了年份,即2013-2014或2014-2015,等等......现在,我将这个年份的值存储在一个会话变量,我通过网站使用它。现在,如果用户想要更改年份,他将不得不退出,然后以不同的年份登录。我在主页上创建了一个下拉菜单,它将显示来自数据库的所有年份。我想通过从主页选择一年而不登出来更改会话变量的值。更改会话变量的值

下面是代码:

session_start(); 
if(!isset($_SESSION["myusername"])){ 
    header("location:login.php"); 
} 

$year = $_SESSION["year"]; 

这里是下拉菜单的代码:

$query = "SELECT * FROM year"; 
$result = mysql_query($query); 
echo "<select class='innerinputstyle' id='year' name='year'><option value='$year'>$year</option>"; 
while($note=mysql_fetch_array($result)){ 
echo "<option value=$note[year]>$note[year]</option>"; 
} 
echo "</select>"; 

谁能告诉我如何改变$year从主页的价值?

+0

对于这个选择,你可以添加一个ajax调用onselect事件。 ajax调用可以触发一个只需将$ _SESSION ['year']更改为传递值的php文件。 – Fallen

+0

你怎么能这样做?我的意思是让我们说,我把一个按钮,然后提交我获得另一个PHP文件的价值。但是,我如何更改会话变量?你能给我一个例子代码或参考吗? – ashah142

回答

0

变化

echo "<select class='innerinputstyle' id='year' name='year'>" 

echo "<select class='innerinputstyle' id='year' name='year' onChange='doIt()'>" 

这里是change_year.php你可以很容易地改变AJAX功能

function doIt(){ 
    var xmlhttp=new XMLHttpRequest(); 
    xmlhttp.onreadystatechange=function(){ 
    } 
    var new_year = document.getElementById('year').value; 
    xmlhttp.open("GET","change_year.php?year="+new_year,true); 
    xmlhttp.send() 
    return false; 
} 

$_SESSION['year']=$_GET['year']; 

警告:未经测试的代码。用于描绘这个想法。

+0

嘿,我试图通过提交表单。但是当我将它重定向到主页时,值保持不变。 – ashah142

+0

你在首页上设置$ _SESSION ['year']的值吗?请注意,当你使用ajax技术时,你不需要提交表单。在选择一个选项时,doIt()函数将被触发。 – Fallen

+0

我试着用ajax做。但是这给了我一个这条线上的错误。 'xmlhttp.open(“GET”,“change_year.php?year”=,true);' – ashah142

0

我认为你有很多选择来实现这个目标,而AJAX就是其中之一,但一切都取决于你想如何实现用户界面。你可以认为创建一个小表格下拉,并提交今年,你可以为AJAX例如通过提交按钮或通过JavaScript和做到这一点的解决方案都是一样的:

$_SESSION['year']=$_GET['year']; 

在如果你不想刷新页面,请使用AJAX,否则只需提交你的输入

+0

嘿,我试着通过提交表单。但是当我将它重定向到主页时,值保持不变。 – ashah142

+0

你在哪里发布你的表单?哪一页?我想你是张贴到t himepage本身,那么你应该有这样的事情:himepage – Delio

+0

session_start(); if(!isset($ _ SESSION [“myusername”])){header(“location:login.php”); } $ _SESSION ['year'] = $ _ GET ['year']; $ year = $ _SESSION [“year”]; – Delio