显示来自具有多个重复PHP的数据库的单个记录

时间:2014-02-17 13:55:42

标签: php sql ajax odbc cascadingdropdown

我有一个填充了车辆的MS Access MDB数据库:'模型','制作','年'等。在'Make'列中,例如有五个ASTON MARTIN条目,每个条目都有不同ID和'Model'链接到它,所以我不想删除重复项。

您可能已经注意到数据库有一个包含所有这些数据的表。我希望我可以更改它但客户端有一个生成此数据库的应用程序然后通过FTP将其保存在服务器上,所以我不能改变数据库。

我已经使用Vehicle'Make'填充了下拉,但是它加载了所有'Makes'。如何防止它加载重复项?所以在这个'Makes'下拉中它装载了五辆ASTON MARTIN汽车,它装载了四辆BMW'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>

非常感谢任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

要仅获取唯一条目,请在sql中使用DISTINCT

$resultMake = odbc_exec($conn, "SELECT DISTINCT Make FROM Vehicle ORDER BY Make") or die (odbc_errormsg());