通过从 javascript 文件中查询数据库,根据下拉菜单中的选择更新 div 内容

Posted

技术标签:

【中文标题】通过从 javascript 文件中查询数据库,根据下拉菜单中的选择更新 div 内容【英文标题】:Updating div content based on a selection from a drop down menu by querying a database from a javascript file 【发布时间】:2020-03-18 22:30:15 【问题描述】:

我之前回答了一个问题here,这是一个巨大的帮助,涉及使用基于 mysql 数据库的下拉选择的 ajax 更改内容。

我现在需要用下拉菜单中所选选项所在行的值填充编辑后 div 的内容。

为了做到这一点,似乎唯一的方法是从我的 js 文件中查询,而唯一的方法是通过 nodejs 或进一步的 ajax。我已经尝试了两种方式,但由于我使用 cpanel 托管站点,nodejs 被证明很困难。 Ajax 将是执行此操作的好方法,但我需要在查询中包含 WHERE cModel = '$cModel' 以便检索正确的值,显然当我获取php 脚本来自一个单独的文件。

如果我遗漏了一些重要细节,我深表歉意,这一直在我脑海中挥之不去,我想看看是否有更简单的方法来做到这一点。谢谢!

HTML & PHP 用于一个下拉框:

<form id="parts">
        <fieldset>
            <legend>Choose your parts</legend>
            Any parts marked with * are required<br/><br/>
            <label for="CPU">CPU*</label><br/>
            <?php
                $cresult = $mysqli->query("SELECT * FROM pCpu ORDER BY cModel asc");
            ?>
                <select id="CPU" name="CPU" onchange="myUpdateFunc()">
                <option value="" disabled selected>Select your Part</option>
                <?php
                while ($rows = $cresult->fetch_assoc()) 
                    $cmodel = $rows['cModel'];
                    echo "<option value='$cmodel'>$cmodel</option>";

                

                ?>
                </select>

                <br/>

                <div id="divResults">

                </div>
                <br/><br/>

JS

function myUpdateFunc()

    var mySelected = $("#CPU").find("option:selected").val();

    $('#divResults').html ('CPU Model: ' + mySelected + '<br/> CPU Socket: ')


【问题讨论】:

【参考方案1】:

AJAX 绝对是要走的路。调用 PHP 脚本并将其传递给cModel

function myUpdateFunc()

  var mySelected = $("#CPU").find("option:selected").val();
  $.ajax(
    url: "searchCPU.php?cmodel=" + mySelected, 
    success: function(result)
    $('#divResults').html ('CPU Model: ' + result + '<br/> CPU Socket: ')
     
  );

searchCPU.php

<?php
    $cmodelParam = $_GET['cmodel'];
    $cresult = $mysqli->query("SELECT * FROM pCpu WHERE cModel = $cmodelParam");
    //assuming it returns a single row for simplicity
    $row = mysqli_fetch_assoc($cresult);
    echo $row['cModel'];
?>

显然你可以做更多的错误检查,这对SQL injection是开放的。您应该始终使用prepared statements。我没有改变它来简单地回答你的问题,让你自己解决这些问题。

【讨论】:

非常感谢!多年来一直试图弄清楚这一点。你救了我很多进一步的心痛。肯定需要进一步研究 php、JS 和 ajax 是如何集成的,还是很新的。 任何网站都只是 HTML、javascript 和 CSS。它们都可以在一个 .html 文件中。您可以制作任何漂亮的网页并将其保存为计算机上的 HTML 文件,然后网络浏览器会将其拉出。 PHP 只是在 HTML 发出之前“编写”脚本,从而使您的网页动态化。网站的任何服务器端语言都以这种方式工作。 是的,我使用标准 html + css 已经有一段时间了,我只是 php 和 js 某些方面的新手。再次感谢您的帮助!

以上是关于通过从 javascript 文件中查询数据库,根据下拉菜单中的选择更新 div 内容的主要内容,如果未能解决你的问题,请参考以下文章

如何通过从 input type='file' 中选择来设置多个视频文件的预览

通过从服务器调用 javascript 来关闭 RadWindow

Ajax 不能通过从数据库中检索大文件来工作

如何通过从结果中减去数字来计算嵌套关系和附加字段

如何通过从数据库中检索值来显示文本框中的值?

如何通过从数据库中获取值来制作可靠的下拉列表