2012-02-15 59 views
0

我有许多不同的PHP脚本,从MySQL数据库中提取不同的信息。目前您必须加载一个页面才能调出其中的SQL查询。特定的php脚本从下拉列表中选择一个选项运行

我想创建一个下拉菜单,当其中一个选项被点击时,它运行一个特定的php脚本并在同一页面上显示结果,在下拉列表下方。

下面是HTML我到目前为止(我用的模板,我发现在:http://www.w3schools.com/php/php_ajax_database.asp

我想它,这样说,如果计费方式是点击PHP文件“billingquery.php”将被运行,显示,或者如果选择All Users选项,将运行并显示php文件“allusersquery.php”。

<html> 
<head> 
<script type="text/javascript"> 
function showUserGroup(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","getusergroup.php?q="+str,true); 
    xmlhttp.send(); 
} 
</script> 
</head> 
<body> 

<form> 
<select name="usergroups" onchange="showUserGroup(this.value)"> 
<option value="">Select a User Group:</option> 
<option value="1">Billing</option> 
<option value="2">All Users</option> 
<option value="3">All Data</option> 
<option value="4">Next Option</option> 
</select> 
</form> 
<br /> 
<div id="txtHint"><b>User Group information and access rights will be listed here.</b> </div> 

</body> 
</html>` 
+0

为什么不使用[jQuery](http://jquery.com/)?所有你需要做的就是一个ajax调用,它会取得结果并重新填充你的下拉菜单。 – afuzzyllama 2012-02-15 15:55:05

+0

谢谢。虽然,我不知道该从哪开始!是否可以为每个选择分配一个动作,以便当它被选中时它将运行该特定的PHP脚本? – 2012-02-15 15:58:43

+0

开始与[互联网](http://www.joe-stevens.com/2010/02/23/populate-a-select-dropdown-list-using-jquery-and-ajax/) – afuzzyllama 2012-02-15 16:00:00

回答

0

首先,jQuery库添加到您的HTML - 最好的办法是从CDN加载它像谷歌:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script> 

然后,添加以下内容:

<script type="text/javascript"> 
$('[name="usergroups"]').on('change', function() { 

    var ajaxMethod = "default.php"; 

    switch($(this).val()) 
    { 
    case "1": 
     ajaxMethod = "billingquery.php"; 
     break; 
    case "2": 
     ajaxMethod = "allusers.php"; 
     break;     
    case "3": 
     ajaxMethod = "alldata.php"; 
     break;     
    case "4": 
     ajaxMethod = "nextoption.php"; 
     break;  
    } 

    $("#txtHint b").load(ajaxMethod); 

});​ 
</script> 

jQuery的功能非常强大,并且真正改变了以帮助开发人员关闭javascript开发。

JSFiddle Example

+0

嗨沃伦, 非常感谢这个答案,这看起来完全正确!但是,当我现在从下拉列表中选择一个选项时,它不会执行任何操作。 上面的default.php是指什么? 最终,当选择案例1时,我希望billingquery.php中包含的sql查询在下面被定位;当案例2被选中时,包含在allusers.php中的SQL查询将被显示等等。 从我所了解的代码中,它应该这样做,但不能确定! 感谢您的帮助。 – 2012-02-16 08:34:48

+0

default.php是一个默认脚本,如果用户选择此选项,它可以显示任何内容:它可能只是一条消息,指出“请从列表中选择一个选项”或类似的东西。 – 2012-02-16 23:59:31

+0

谢谢。但是,我仍然无法从下拉列表中选择每个文件(billingquery.php/allusers.php)中包含的查询来更新页面吗?干杯。 – 2012-02-17 08:29:50

相关问题