道歉,如果这是一个重复的问题,我确实看到了其他人,但我找不到我想要的东西。
您可以在以下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
等
希望这是有道理的。
答案 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";
?>