如何处理具有动态元素的HTML表单?

时间:2011-03-30 08:58:01

标签: php jquery html webforms

道歉,如果这是一个重复的问题,我确实看到了其他人,但我找不到我想要的东西。

您可以在以下jsfiddle中查看我的代码:http://jsfiddle.net/ZnWMq/

正如您所看到的,我已将我的下拉列表tags[]values[]operands[]命名为 - 即作为数组,以便我们设置的任何PHP页面作为表单的操作将能够处理动态添加的下拉列表。

关于如何在将值发送到处理表单提交的页面时如何将值拆分,我感到有些困惑,所以如果有人能说清楚,我将非常感激。

此致

马丁

更新

嗨,谢谢你的回复。

到目前为止,我已使用advancedsearch.php方法将表单的操作更改为POST,以下是代码:

<?php
    $tags = $_POST['tags'];
    $operands = $_POST['operands'];
    $values = $_POST['values'];

   foreach ($tags as $t)
   {
       echo "$t<br />";
   }

   foreach ($operands as $o) 
   {
       echo "$o<br />";
   }

  foreach ($values as $v) 
  {
      echo "$v<br />";
  }

 ?>

这可以获得值,但它只需要调整,所以我可以将它变成查询MySQL数据库的格式,所以像SELECT * FROM table_name WHERE tag1 operand1 value1 radio_button_value(AND or OR) tag2 operand2 value2 radio_button_value

希望这是有道理的。

3 个答案:

答案 0 :(得分:1)

  

所以当你点击'高级搜索'   你想得到的价值   s? - Alex Thomas 6分钟前

如果是这种情况,那么这应该有所帮助:http://jsfiddle.net/ZnWMq/1/

我已经完成了代码的工作,因为我不想破坏你的代码。继承我的代码:

$('#click').click(function(){
    tags = $("select[name='tags[]'] option:selected").val();
    operands = $("select[name='operands[]'] option:selected").val();
    values = $("select[name='values[]'] option:selected").val();
    output = tags+" "+operands+" "+values;
    alert(output);
});

如果这不是你想要的,我会再试一次:)

答案 1 :(得分:1)

在这种情况下,您将收到3个post变量作为数组,它们应具有相同的长度(按计数)。你需要这样的代码:

$filterCount = count($_POST['tags']);
$filters = array();

for ($i = 0; $i < $filterCount; $i++) {
    $filters[] = array('tag' => $_POST['tags'][$i], 'operand' => $_POST['operands'][$i], 'value' => $_POST['values'][$i]);
}

您也可以尝试不同的方法。例如,您可以为每个过滤器使用不同的名称:

<select name="filter1[tag]" class="tags">
<option>tags</option>
</select>

<select name="filter1[operand]" class="operands">
<option>operands</option>
</select>

<select name="filter1[value]" class="values">
<option>values</option>
</select>

克隆过滤器时,必须将名称更改为filterN。

答案 2 :(得分:0)

通过执行以下操作来管理它:

<?php

$tags = $_POST['tags'];
$operands = $_POST['operands'];
$values = $_POST['values'];
$cat = $_POST['cat'];

print "<pre>";
print_r ($_POST);

$query .="WHERE ";

for ($counter=0 ; $counter < count($tags) ; $counter++)
{

    if ($counter>0)
    {
        $query .= "$cat ";
    }

    $query .= sprintf("%s %s '%s' ", $tags[$counter] , $operands[$counter] ,   
    $values[$counter]) ;
}

echo "$query";

?>