使用Javascript在选择框更改时显示MySQL列数据

使用Javascript在选择框更改时显示MySQL列数据,javascript,php,mysql,sql,Javascript,Php,Mysql,Sql,下面的代码显示了一个html选择框,其中包含使用PHP While循环的MySQL数据库中的值 <select name="badge"> <option value="">Please Choose...</option> <?php $sql2="SELECT * from badges order by name ASC "; $rs2=mysql_query($sql2,$conn) or die(mysql_er

下面的代码显示了一个html选择框,其中包含使用PHP While循环的MySQL数据库中的值

<select name="badge">
    <option value="">Please Choose...</option>
    <?php
    $sql2="SELECT * from badges order by name ASC ";
    $rs2=mysql_query($sql2,$conn) or die(mysql_error());
    while($result2=mysql_fetch_array($rs2))
    {
        echo '<option value="'.$result2["sequence"].'">'.$result2["name"].'</option>';
    }
    ?>
    </select>

请选择。。。
在我的徽章表中,我有以下列

  • 序列
  • 名字
  • 注释
  • 当选择框中的值更改时,我希望能够显示所选行的notes列

    我目前有这个,但它没有使用MySQL表中的数据

    <select id="select_test" name="form_select">
           <option value="0">No</option>
           <option value ="1">Yes</option>
        </select>
    
        <div id="div1" style="display: none;">hidden text</div>
    
    <script>
            document.getElementById('select_test').addEventListener('change', function () {
                var style = this.value == 1 ? 'block' : 'none';
                document.getElementById('div1').style.display = style;
            });
    </script>
    
    
    不
    对
    隐藏文本
    document.getElementById('select_test')。addEventListener('change',function(){
    var style=this.value==1?'block':'none';
    document.getElementById('div1').style.display=style;
    });
    
    如何使用MySQL实现上述功能

    以下是普通HTML的外观:


    很遗憾,您无法从浏览器访问MySQL服务器。我使用jquery作为我的示例,您可以将其转换为原始javascript(如果您无法转换,也可以在此处进行注释),但我强烈建议您使用jquery。(因为我没有太多时间,无法为您提供JS的确切代码,如果您需要,我将在明天用它更新答案)

    一旦元素的条件(如果您需要)得到满足,就可以使用(如果您不想使用jquery,可以使用本机)来调用您的服务器。根据响应的不同,您可以更新div1元素

    您可以查询另一个页面,这是专门为回答ajax而编写的。您可以将此代码用于php页面。如果您正在使用POST,请将$\u GET替换为$\u POST,或者将“sequence”替换为您为ajax调用指定的任何名称

    $sql2="SELECT * from badges WHERE `sequence` = {$_GET['sequence']}";
    $sql2=mysql_real_escape_string($sql2); // This is to prevent SQL injection should a hacker send bad data to your .php file
    $rs2=mysql_query($sql2,$conn) or die(mysql_error());
    $result2=mysql_fetch_array($rs2);
    echo $result2["notes"];
    
    Ps:我强烈推荐使用PDO for mysql。它更方便、更安全


    然后,收到ajax回复后,只需用服务器回复的内容替换div中的值即可

    很抱歉,我不太明白您想要实现什么。当用户选择时,您是否试图从mysql表中获取注释?也就是说,用mysql数据库注释中的任何内容更新div1的“隐藏文本”以获取该值?是的,我为迟来的响应感到抱歉。这很好-我不太擅长javascript,所以我认为我无法为该部分编写任何内容:)
    $sql2=“SELECT*from-badges WHERE-sequence=$\u-GET['sequence'”将不起作用。数组值必须以
    {$Array['index']}
    的形式插入字符串,而不仅仅是
    $Array['index']
    。按照您使用的方式,您将获得sring
    SELECT*from-badges WHERE-sequence=Array['sequence']
    或类似的内容,或者PHP错误“意外的T_-ENCAPSED_和_-WHITESPACE”。我的坏消息,最近有点笨拙。Updatedi以前有过这样的功能——它使用了两个表,并根据第一个表中的选定项更改了第二个选择框