【问题标题】:Display a single record from a database with multiple duplicates PHP显示数据库中包含多个重复项的单个记录 PHP
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。我觉得很不错,不!那工作得很好。您不会碰巧知道为什么上面的代码会将车辆“制造”转储到“模型”的相关下拉列表中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2017-10-09
    • 1970-01-01
    • 2018-12-27
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多