简体   繁体   English

如何自动填充<input >在取决于<select >来自 MySQL?

[英]How to autofill <input > in depending of <select > from MySQL?

I have no experience in PHP, HTML or JavaScript and I ask for help.我没有 PHP、HTML 或 JavaScript 方面的经验,我寻求帮助。

I have php code that displays one select, (strings of this select is from MySQL database) and two input fields.我有显示一个选择的 php 代码(这个选择的字符串来自 MySQL 数据库)和两个输入字段。 MySQL table "g_achievement" format: MySQL 表“g_achievement”格式:

id;     achievement;        craft_1_points;     craft_2_points;  
0;      Medal Gold;         5;                  8;  
1;      Medal Silver;       10;                 15;  

选择和输入

I need to autofill inputs by data from "craft_1_points" and "craft_2_points" when I select in select field.当我在选择字段中选择时,我需要通过来自“craft_1_points”和“craft_2_points”的数据自动填充输入。

My code:我的代码:

echo "<label for=\"achievement_id\">Achievement</label><br/>";
    $sql2 = "SELECT * FROM g_achievement";
    $result_select2 = mysql_query($sql2);
    /*drop-down list*/
    echo "<select name = 'achievement'>";
    while($object2 = mysql_fetch_object($result_select2)){
        echo "<option value = '$object2->achievement'>$object2->achievement</option>";
    }
    echo "</select>";
//============================
    echo "<label for=\"craft_1\">Craft 1</label><br/>";
    echo "<input type=\"number\" name=\"craft_1\" size=\"30\"><br/>";
    echo "<label for=\"craft_2\">Craft 2</label><br/>";
    echo "<input type=\"number\" name=\"craft_2\" size=\"30\"><br/>";

What is language I need to use?我需要使用什么语言? JavaScript? JavaScript? What is code I need?我需要什么代码?

Help me please.请帮帮我。 Thank you.谢谢你。

For that, you have to use Javascript in 2 ways.为此,您必须以两种方式使用 Javascript。

  1. you can fetch all those data from table to client side then by Javascript on select of any option from drop-down list you can populate the related value in the INPUT box.您可以将所有这些数据从表中提取到客户端,然后通过 Javascript 从下拉列表中选择任何选项,您可以在 INPUT 框中填充相关值。
  2. On select of any option from the drop-down, you can make an Ajax call to server side & fetch the data from server & populate those in client side by Javascript.从下拉列表中选择任何选项,您可以对服务器端进行 Ajax 调用并从服务器获取数据并通过 Javascript 填充客户端中的数据。

Following is an example of the 1st way which above I've described.以下是我上面描述的第一种方式的示例。

<?php
    // Following is a sample data. You can replace this data by getting it from your DB
    $dataSource = array(
            0 => array(
                    'achievement' => 'Medal Gold',
                    'craft_1_points' => 5,
                    'craft_2_points' => 8,
                ),
            1 => array(
                    'achievement' => 'Medal Silver',
                    'craft_1_points' => 10,
                    'craft_2_points' => 15,
                )
        );

    $dataSourceInJson = json_encode($dataSource);
?>

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
    <script type="text/javascript">
        $( document ).ready(function() {
            var dataSource = '<?php echo $dataSourceInJson; ?>';

            $( "#achievements" ).click(function() {
                var achievementSelected = $(this).val();

                $.each(JSON.parse(dataSource), function( index, value ) {
                    var achievementType = value.achievement;

                    if(achievementSelected == achievementType){
                        // Extract related Craft values from JSON object
                        var craft_1_points = value.craft_1_points;
                        var craft_2_points = value.craft_2_points;

                        // Place craft value in respective INPUT box
                        $('#craft_1_points').val(craft_1_points);
                        $('#craft_2_points').val(craft_2_points);
                    }

                });
            });
        });
    </script>
</head>
<body>
    <select id='achievements' name="achievements">
        <option value="">Select Achivements</option>
        <?php
            foreach ($dataSource as $key => $value)
            {
                echo "<option value='$value[achievement]'>$value[achievement]</option>";
            }
        ?>
    </select>

    <br>Craft 1<br>
    <input type="text" id="craft_1_points" name="craft_1_points" value="">

    <br>Craft 2<br>
    <input type="text" id="craft_2_points" name="craft_2_points" value="">
</body>
</html>
set dbConn=Server.CreateObject("ADODB.Connection")
dbConn.Open strProvider
rowCount=0
sqlTable = "select id, name from [sysobjects] where type in ('U','V','P') and category<>2 Order By Name "
set rsSchema=dbConn.execute(sqlTable)
%>
<select  name="getTable" class="selectpicker form-control show-tick" data-live-search="true">
<%
do until rsSchema.EOF %>
 <option value='<%=rsSchema(0)%>'><%= rsSchema(1)%>
<% rsSchema.MoveNext
loop
rsSchema.Close
set rsSchema = Nothing %></option>
</select>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM