2013-07-22 61 views
1

我正在試圖使動態下拉框搜索工具,以幫助縮小從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

回答

0

在第二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); 
    } 
}); 
});