【发布时间】:2014-02-17 13:55:41
【问题描述】:
我有一个 MS Access MDB 数据库,其中填充了车辆:“型号”、“制造”、“年份”等。在“制造”列中,例如 ASTON MARTIN 有五个条目,每个条目都有不同的ID 和“模型”链接到它,所以我不想删除重复项。
您可能已经注意到数据库有一个包含所有这些数据的表。我希望我可以更改它,但客户端有一个应用程序生成此数据库,然后通过 FTP 将其保存在服务器上,所以我不能更改数据库。
我已经使用车辆“制造”填充下拉列表,但它会加载所有“制造”。如何防止它加载重复项?所以在这个“品牌”下拉列表中,它加载了五辆阿斯顿马丁汽车,它加载了四辆宝马“品牌”。请记住,我无法删除任何内容。此外,当在“Makes”下拉列表中进行选择时,它应该将所选“Make”的模型加载到第二个依赖下拉列表中,但由于某种原因,它也会转储“进入“模型”下拉菜单。
请参阅下面的代码以将“品牌”和“模型”加载到级联下拉菜单中。
AJAX 函数:
<script type="text/javascript">
function loadXMLDoc() {
var xmlhttp;
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.frm.modelSelection.innerHTML=xmlhttp.responseText;
}
}
var makevalue=document.frm.makeSelection.value;
xmlhttp.open("GET","?ajaxmake="+ makevalue,true);
xmlhttp.send();
}
</script>
PHP 代码:
<?php
$dbName = "C:/xampp/htdocs/new/db/savvyautoweb.mdb";
// Throws an error if the database cannot be found
if (!file_exists($dbName)) {
die("Could not find database file.");
}
// Connects to the database
// Assumes there is no username or password
$conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", '', '');
?>
<form action="" method="post" name="frm">
<select name="makeSelection" onchange="loadXMLDoc()">
<?php
//Loads the Makes from the database into a dropdown
$resultMake = odbc_exec($conn, "SELECT DISTICT Make FROM Vehicle ORDER BY Make") or die (odbc_errormsg());
while ($rowMake = odbc_fetch_array($resultMake)) {
echo "<option value='$rowMake[Make]'>$rowMake[Make]</option>";
}
?>
</select>
<select name="modelSelection">
<?php
//loads the models based on the makes selection into a dependant dropdown
if (isset($_REQUEST['ajaxmake'])) {
$resultModel = odbc_exec($conn, "SELECT Model FROM Vehicle WHERE Make = '".$_REQUEST['ajaxmake']."'") or die (odbc_errormsg());
while ($rowModel = odbc_fetch_array($resultModel)) {
echo "<option value='$rowModel[Model]'>$rowModel[Model]</option>";
}
die();
}
?>
</select>
<input type="submit" name="submit" value="Go">
</form>
任何帮助将不胜感激。
谢谢。
【问题讨论】:
标签: php sql ajax odbc cascadingdropdown