2013-06-24 72 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