PHP中的动态表单处理,jQuery&;HTML


Dynamic Form Handling in 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[]" />

这在服务器端是一场噩梦。

您可能需要按位置/间隔隔离活动。解决方案是为每个间隔使用一个索引,这涉及到更改为每个间隔创建新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;
}