动态依赖下拉菜单与AJAX php mysql

问题描述:

我正在试图使动态下拉框搜索工具,以帮助缩小从MySQL服务器显示数据。我是一个体面的PHP程序员,但需要javascript和ajax帮助。动态依赖下拉菜单与AJAX php mysql

该网站目前共有3个页面:index_test.php,dropdown.php和dropdown2.php。

在index_test.php上有4个下拉菜单,需要填充信息。第一种是在页面加载时使用php填充来自mysql表格的状态名称。第二个盒子使用.change()来填充,它引用了php代码,并且从mysql表格中显示选定状态的学校。 第三个盒子应该从第二个盒子中取出选定的值,并将所选学校的类别名称显示给用户,该步骤就是代码打破的地方。当通过提交表单进行测试时,php工作正常,但我希望能够在不刷新页面的情况下填写最后2个框。 的MySQL表的格式是: 表学校(学校ID,学校,州) 表类:(类标识码,学校ID,class_abrv,class_number)

谢谢您的帮助

为index_test代码.PHP:

<?php include_once("connect.php"); ?> 
<html> 
<head> 
<title>ajax</title> 
<script src="jquery.js"></script> 

<script type="text/javascript"> 
$(document).ready(function(){ 
$("#state").change(function(){ 
var state = $("#state").val(); 
$.ajax({ 
type:"post", 
url:"dropdown.php", 
data:"state="+state, 
success: function(data) { 
$("#school").html(data); 
} 
}); 
}); 

$("#school").change(function(){ 
var state = $("#school").val(); 
$.ajax({ 
type:"post", 
url:"dropdown2.php", 
data:"school="+school, 
success: function(data) { 
$("#classname").html(data); 
} 
}); 
}); 

}); 

</script> 


</head> 
<body> 

<h1>Get Notes:</h1> 
<br/> 
<form action="dropdown2.php" method="post"> 

State: <select id="state" name="state"> 
<option>--Select State--</option> 
<?php 
$sql = "SELECT states FROM states"; 
$result = mysql_query($sql); 

while ($output = mysql_fetch_array($result)) { 
$state_name = $output['states']; 
echo "<option value=\"$state_name\">$state_name</option>"; 
}  
?> 
</select> 
<br/> 

School: <select id="school" name="school"> 
<option>--Select School--</option> 
</select> 
<br/> 

Class Name: <select id="classname" name="classname"> 
<option>--Select Class Name--</option> 
</select> 
<br/> 

Class Number: <select id="classnumber" name="classnumber"> 
<option>Select Class Name</option> 
</select> 
<br/> 

<input type="submit" value="Search" /> 
</form> 


</body> 
</html> 

Dropdown.php:

<?php 
include_once("connect.php"); 

$state=$_POST["state"]; 
$result = mysql_query("select schools FROM schools where states='$state' "); 
while($school = mysql_fetch_array($result)){ 
echo"<option value=".$school['schools'].">".$school['schools']."</option>"; 
} 
?> 

Dropdown2.php

<?php 
include_once("connect.php"); 

$school=$_POST['school']; 
$result = mysql_query("SELECT school_id FROM schools WHERE schools='$school' "); 
$school_id = mysql_fetch_array($result); 

$id = $school_id['school_id']; 
$classname = mysql_query("SELECT DISTINCT class_abrv FROM classes WHERE school_id='$id'   ORDER BY class_abrv asc"); 

while($class = mysql_fetch_array($classname)){ 
echo"<option value=".$class['class_abrv'].">".$class['class_abrv']."</option>"; 
} 
?> 
+0

对于SQL注入攻击**和**,如果你还没有被攻击,你将被黑客攻击**。使用准备/参数化查询完全避免此问题。 – Brad

+1

@Brad你绝对是对的,谢谢你加入这个。当我试图弄清楚ajax是如何工作的时候,这又回来了。看看你的旧代码有时候很粗糙....:/。我从那时起就是一个dba,所以现在让我非常畏缩,就像你可能做的那样。谢谢! – brian

在第二AJAX功能已分配学校下拉框中的值声明变量,但你传递变量学校阿贾克斯后。所以没有学校变量,这就是为什么你会得到错误。

$("#school").change(function(){ 
var *state* = $("#school").val(); 
//above variable should be school. 
$.ajax({ 
    type:"post", 
    url:"dropdown2.php", 
    data:"school="+*school*, 
    success: function(data) { 
    $("#classname").html(data); 
    } 
}); 
});