如何基于下拉选项构建动态查询?

时间:2013-01-08 15:37:47

标签: php jquery mysql

编辑:

SQL

$valuefromjs = $_REQUEST['var'];
$result6 = "SELECT DISTINCT $valuefromjs FROM persons ORDER BY $valuefromjs ASC";
$result7 = mysql_query($result6);
$num = mysql_num_rows($result7);  

$dataRanges[0] = array('dataRanges');       
        for ($i=1; $i<($num+1); $i++)
        {
        $dataRanges[$i] = array( (int) mysql_result($result7, $i-1) );
        }

echo json_encode($dataRanges);

HTML

<select id="combo2" class="combo" data-index="2"></select>

的jQuery

$('#1combo').on('change', function () {
var jsonVar = $.ajax({
url : "visits/comboquery.php?var="+$(this).val(), 
dataType: "json",
async: false,
success: function(response) {
}
}).responseText;
for (var i=1; i<objVar.length;i++)
    {
    $('#combo2').html("<option value="+objVar[i]+">"+objVar[i]+"</option>");
    }
});

问题:

我有一个包含查询结果的数组。现在我需要结果是combo2选项,出了什么问题?

2 个答案:

答案 0 :(得分:0)

据我所知,combo1的选择将定义为构建combo2运行哪个查询。

问题:用于构建combo2的PHP在服务器端进行了解析,即,当页面到达用户的浏览器并且javascript开始执行时,PHP代码总是完成执行。

如果你有一组有限的可能的查询可以生成秒组合(这应该是因为combo1有有限数量的选项),你可以创建所有这些,每个都有不同的id,并维护它们隐藏(css&#34;显示:无&#34;)。

<select id="firstCombo2" class="combo2">
    ...
</select>
<select id="secondCombo2" class="combo2">
    ...
</select>

现在,当用户从combo1中进行选择时,您可以决定要显示哪个隐藏的组合(css&#34; display:block&#34;)。

$('select#combo1).on("change", function(){
    $('select.combo2').css('display','none'); //hide all combo2's
    if($(this).val()=='Opt1'){
            $('select#firstCombo2').css('display','block');
    }else if($(this).val()=='Opt2'){
            $('select#secondCombo2').css('display','block');
    }
}

答案 1 :(得分:0)

您应该使用AJAX来解决您的问题。 在combo1 onChange上调用对服务器的AJAX调用并发送选定的combo1值。 然后在你的php代码中运行带有从AJAX请求接收的值的查询,并构造一个新的组合框,其中包含字符串中的选项并回显该字符串。您可以使用该AJAX响应来填充新的combo2。