2011-06-21 174 views
2

呃!有任何想法嗎?PHP,jQuery和HTML動態表單處理

有一個窗體可以跟蹤給定時間間隔內的用戶活動。每個時間間隔可以有「位置」&多個「活動」的輸入。所以表單的時間間隔數量是可變的,每個時間間隔的活動數量是可變的。

如何在HTML中設置此值以平滑處理PHP?編輯:額外的間隔和活動可以通過jQuery添加。

我最初的想法很複雜,所以任何人有更好的主意?

<!--Interval 1 with 4 activities--> 
<input type="text" name="interval[]" /> 
    <input type="text" name="location[]" /> 

    <input type="text" name="activity[]" /> 
    <input type="text" name="activity[]" /> 
    <input type="text" name="activity[]" /> 
    <input type="text" name="activity[]" /> 

<!--Interval 2 with 2 activities--> 
<input type="text" name="interval[]" /> 
    <input type="text" name="location[]" /> 

    <input type="text" name="activity[]" /> 
    <input type="text" name="activity[]" /> 

這是服務器端的噩夢。

回答

2

您可能需要隔離每個位置/間隔的活動。一個解決方案是爲每個間隔使用一個索引,這涉及到改變你爲每個間隔創建新的html元素的方式。

因此生成的代碼將是:

<!--Interval 1 with 4 activities--> 
<input type="text" name="interval[1][]" /> 
    <input type="text" name="location[1][]" /> 

    <input type="text" name="activity[1][]" /> 
    <input type="text" name="activity[1][]" /> 
    <input type="text" name="activity[1][]" /> 
    <input type="text" name="activity[1][]" /> 

<!--Interval 2 with 2 activities--> 
<input type="text" name="interval[2][]" /> 
    <input type="text" name="location[2][]" /> 

    <input type="text" name="activity[2][]" /> 
    <input type="text" name="activity[2][]" /> 

但它並不順利爲操縱:

<!--Interval 1 with 4 activities--> 
<input type="text" name="interval[1][interval]" value="interval id" /> // optional 
<input type="text" name="interval[1][location]" value="location" /> 
<input type="text" name="interval[1][activity][]" value="activity" /> 
<input type="text" name="interval[1][activity][]" value="activity" /> 
<input type="text" name="interval[1][activity][]" value="activity" /> 
<input type="text" name="interval[1][activity][]" value="activity" /> 

<!--Interval 2 with 2 activities--> 
<input type="text" name="interval[2][interval]" value="interval id" /> // optional 
<input type="text" name="interval[2][location]" value="location" /> 
<input type="text" name="interval[2][activity][]" value="activity" /> 
<input type="text" name="interval[2][activity][]" value="activity" /> 

,這將給你一個很好的樹(在數組的數組的形式)迭代。

爲了做到這一點,您需要一個javascript函數來跟蹤當前間隔索引,並使用該索引來排列間隔數組。

服務器端所有你需要做的就是(在POST方法的情況下):

foreach ($_POST['interval'] as $k => $interval) { 

    echo $interval['interval']; 
    echo $interval['location']; 
    foreach ($interval['activity'] as $id => $activity) 
     echo $activity; 

}