2011-05-09 82 views
0

我有一個測試應用程序的這個littel問題。php5:通過窗體傳遞對象?可以做到嗎?

當前外觀:

<form> 
<span>1:Question goes here </span> 
<input type=hidden name=true_1 value=10> 
<input type=hidden name=false_1 value=20> 
<input type=hidden name=target_1 value=color> 
<select name=answer_1[]><option>blah</option><option>etc</option></select> 

<span>2:Question goes here </span> 
<input type=hidden name=true_2 value=40> 
<input type=hidden name=false_2 value=20> 
<input type=hidden name=target_2 value=size> 
<select name=answer_2[]><option>blah</option><option>etc</option></select> 
</form> 

目前我使用的爆炸腳本( 「_」,$獲得);所以我可以用自己的屬性來處理每個問題。

目前的做法
從數據庫1.Get問題。 (問題,目標,真實,錯誤,答案)
2.loop throught them and creat a a similar a form of one我上面寫的所有問題 3.張貼我爆炸得到每個問題屬性獨自 4.pass他們到該評價功能,如果回答正確或錯誤,並給予成績

什麼即時試圖做的是把它變成接力
1.creating對每個問題的對象,並指定自己的屬性(的問題,真的,假的,目標,答案)foreach($問題)$ q [1] =新問題();

2.echo $ q []供用戶回答。

3.接收用戶回答後的$ q []和$ _POST他們。

希望我描述這個right.but它對我來說非常重要的動態保持每一件事,所以我需要包括隱藏的領域。 它可行嗎?

回答

2

你可以使用json數據類型來處理這種類型的任務(假設你的對象只是存儲數據,而不是方法,也不需要__sleep,__wakeup等)。

<input name="fooBar" value="<?php echo json_encode(/*some_array_with_data*/);?>"> 

表單POST後,你可以這樣做

$_POST['fooBar'] = json_decode($_POST['fooBar']); 

,並開始迭代產生的陣列。

注意:因爲json_encode導致字符串包含字符,如你應該也使用base64_encode,url_encode或類似的東西。