2011-06-21 176 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; 

}