我正在試圖使動態下拉框搜索工具,以幫助縮小從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>";
}
?>
對於SQL注入攻擊**和**,如果你還沒有被攻擊,你將被黑客攻擊**。使用準備/參數化查詢完全避免此問題。 – Brad
@Brad你絕對是對的,謝謝你加入這個。當我試圖弄清楚ajax是如何工作的時候,這又回來了。看看你的舊代碼有時候很粗糙....:/。我從那時起就是一個dba,所以現在讓我非常畏縮,就像你可能做的那樣。謝謝! – brian