【问题标题】:How to process HTML form that has dynamic elements?如何处理具有动态元素的 HTML 表单?
【发布时间】:2011-03-30 08:58:00
【问题描述】:

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

你可以在下面的 jsfiddle 中看到我的代码:http://jsfiddle.net/ZnWMq/

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

我只是有点困惑,一旦将值发送到处理表单提交的页面后如何拆分它们,所以如果有人能解释一下,我将不胜感激。

问候,

马丁

更新

您好,感谢您的回复。

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

<?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

希望这是有道理的。

【问题讨论】:

  • 因此,当您单击“高级搜索”时,您希望获取
  • 是的,获取所有值并将其转换为格式以查询 MySQL 数据库。

标签: php jquery html webforms


【解决方案1】:

所以当您点击“高级搜索”时 你想得到的值 年代? – 亚历克斯·托马斯 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);
});

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

【讨论】:

  • 嗨,Alex,感谢您的回复,我已经更新了我的问题。刚刚意识到我没有向 php 页面提供单选按钮值,以防您感到困惑!我已经把它提交到一个单独的 PHP 页面,但是一旦我们解决了如何将它放入查询中,使用 AJAX 来代替它会很好。
【解决方案2】:

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

$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。

【讨论】:

    【解决方案3】:

    通过以下方式对其进行管理:

    <?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";
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 2013-07-16
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多