修订:
大家好,感谢您的回复。我一直在努力试图将代码插入我的页面,但我仍然没有运气。虽然摆弄我不明白为什么像下面的代码不起作用 - 我不能让这个工作要么介意你(!)。如果不可能,我希望有人可以将这个想法发挥下来,以免我浪费时间去尝试:
<form name='Names' role='form' action='#' method='get' onchange='this.form.submit()'>
<select name="FirstName">
<option value="1">FirstName#1</option>
</select>
<select name="LastName">
<option value="1">LastName#1</option>
</select>
</form>
...然后我可以在$_GET['FirstName']
和$_GET['LastName']
中选择这些选项并将它们传递到我的mysqli_query()中以生成表格吗?
为了防止我的混乱传播的机会,我首先要描述我正在尝试做什么...我想要一个网页,其中包含一组可以过滤的下拉列表 - 类似于Excel过滤器。如果你知道一个更好的方法,而不是我在下面尝试的方法 - 请赐教我!
现在,描述我迄今取得的最佳进展:
我有以下脚本(直接从W3schools复制:
<script>
function showUser(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","entry_table.php?q="+str,true);
xmlhttp.send();
}
</script>
上面的脚本是从下面的下拉列表中调用的,该下拉列表使用SQL查询中的PHP while循环填充:
<form>
<select name="Name" onchange="showUser(this.value)">
<option value="1">User#1</option>
</select>
</form>
然后将$ q值传递给PHP页面,以便在生成SQL查询后显示表:
WHERE UserID="$q"
这有效,但我担心这似乎是一种冗长的方式 - 特别是如果我尝试扩展查询以包含6-7个其他下拉过滤器。
提前致谢, 本
答案 0 :(得分:0)
您可以改为使用回调函数。
function getData(url, callback)
{
if (window.XMLHttpRequest)
{
//IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{ //IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
callback(xmlhttp.responseText);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
然后像这样进行ajax调用:
getData("entry_table.php?q="+str, function(data)
{
document.getElementById("txtHint").innerHTML=data;
});
外部功能
function doStuff(value) {
getData("entry_table.php?q="+value, function(data)
{
document.getElementById("txtHint").innerHTML=data;
});
}
然后选择
<select onchange="doStuff(this.value)">