SESSION數組怎麼使用
來源:互聯網
上載者:User
SESSION數組如何使用?
代碼如下
……串連資料庫部分
while($row=mysql_fetch_array($myquery)){
$arrayid[]=$row[id];
$array[]=$row[question];
……將對應的列賦給相應數組
}
$cnt=count($arrayid);
$answer[]=$_POST['style1'];
$_SESSION[]=$answer;//這裡遇到了問題?>
echo
"".
"A." . $arrayA[$i]."".
`````````````省略B,C,D選項
?>
我在做一個線上答題系統,通過$answer[]數組接收每次使用者的選項。我想用一個$_SESSION[]數組批量儲存使用者的選項(即一次性把使用者的答題結果儲存完)
頁面每次讀取一個選擇題,而不是一組,點擊提交之後會在“同一頁面”重新整理出下一個題。也就是每點擊一次提交相當於重新整理一次頁面,會不會是$_SESSION[]的機制是只能只能記錄一次性提交的資料,第二次提交的資料會把第一次的資料覆蓋掉。
我現在一共嘗試了兩種方法,但是讀沒有成功
方法1:
$answer[]=$_POST['style1'];
for($i=0;$i<$cnt;$i++){
$_SESSION[$i+1]=$answer[$i];
}
雖然是迴圈賦值,但由於POST每次只傳出一個值給$answer[],因此其實只有$array[0]中有使用者提交的答案,賦值給$_SESSION[]之後同樣只有$_SESSION[1]中有答案,其他的索引值均沒有答案。
列印出的結果
Array ( [1] => A [2] => [3] => [4] => [5] => )
方法2:
$answer=$_POST['style1'];注意這裡的$answer不是數組而是變數
$i = $i+1;
$_SESSION[$i]=array("id"=>$i,"answer"=>$answer);
print_r($_SESSION);
目的是用$_SESSION建立一個二維數組,其中id用來記錄題號,answer用來記錄選項。
每題列印出的結果為
Array ( [0] => Array ( [id] => 0 [answer] => ) ) 未點擊提交按鈕
Array ( [1] => Array ( [id] => 1 [answer] => A ) ) 點擊一次提交按鈕,這裡記錄了題號1和使用者選項A……
但是當我答完所有的選擇題
print_r($_SESSION[5]);
print($_SESSION[4]);的時候,只有$_SESSION[5]中有值,這個是最後一個題,也就是說$_SESSION[$i]中只有最後一個題。
$_SESSION[1]——$_SESSION[4]裡面的值去哪裡了,為什麼沒有被記錄?
麻煩大家幫我想想有沒有好的方法,提一些修改建議
------解決方案--------------------
你沒做過實際調查項目(線下和線上)吧?
問卷和答卷沒必要合并的,合并的唯一作用就是最後輸出報告省去一次讀取資料庫(問卷部分)的工作而已
即使中間的統計過程一般都是忽略問卷的,如果答卷也是入庫的話就更加沒必要了
另外,問卷的問題量不會太大的,如果很大,去回答就不是人,而是一台機器了
一般情況下一次讀出放入session就行,輸出到用戶端就視乎調查需要逐題或一次輸出
特殊情況是後續題目不定(題庫),而且跟前一個答案有關(跳轉且分支龐大,邏輯關係複雜),這樣才需要每題讀庫
基於上述兩點,一般情況-->讀題一次過記入session,答案逐個記入session
特殊情況,每次讀題把id記入session
基本原則是題目在讀取就記入session,然後才向用戶端發送,而不是用戶端答題後才記入session,小心處理好它們的對應關係就行了