动态下拉菜单在 div 中显示动态内容

Posted

技术标签:

【中文标题】动态下拉菜单在 div 中显示动态内容【英文标题】:Dynamic Dropdown Displays Dynamic Content In a Div 【发布时间】:2014-09-12 13:38:21 【问题描述】:

我有一个存储在 mysql 数据库中的库存清单。我有一个表格,它接受用户输入来更新库存变化,所有表格都在一个带有项目名称列的表上,下拉列表中包含一个完整的项目,以及一个(当前)空白 # In Stock 列。

这是我的表的代码:

<table id="updateStockTable">
        <thead>
            <tr>
                <th>Item Name</th>
                <th># In Stock</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <select required>
                        <option></option>
                        <?php
                        $query = mysqli_query($db, "SELECT itemName FROM SOISInventoryList ORDER BY itemName");

                        if(!$query)
                            echo "Could not grab query.";
                        

                        else
                            while($row = mysqli_fetch_assoc($query))
                                echo "<option>" . $row['itemName'] . "</option>";
                                                            
                        
                        ?>
                    </select>
                </td>
                <td>
                    -
                </td>
            </tr>
        </tbody>
    </table>

项目名称下拉列表是通过数据库生成的。我希望,每当用户从下拉列表中选择一个项目时,该项目的库存数量会出现在 # In Stock column 的一个 div 中。

我的问题是:Item Name 下拉列表是通过数据库生成的,因此当前没有任何项目具有值,这是我找到的最简单的解决方案,当您希望下拉选择显示内容时一个分区。使用 AJAX 似乎是另一种可能的解决方案,但我什至不确定如何将它用于库存列表。

我不确定这些想法中的任何一个是否是正确或最佳的解决方案,如果是,我将如何使用它们中的任何一个。

编辑:

所以我决定使用 AJAX 方法。我设置了一个单独的 PHP 文件,它只是从数据库中返回库存中的数字,现在我正在尝试使用它来提取主页所需的库存数字。有人告诉我,我需要使用更改事件来触发每个新值,并使用 AJAX 请求,但我不知道该怎么做,希望任何人都可以提供帮助!

【问题讨论】:

【参考方案1】:

所以这是我想出的解决方案:

我设置了一个单独的 php 文件,其中包含一个查询,该查询获取当前选择的下拉项并从 MySQL 数据库中检索相应的库存值:

$receivedString = null;

if ($_GET["item"] != "")
    $receivedString = $_GET["item"];


if($receivedString != null)
    //Check connection
    $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die ('Could not connect to SOIS MySQL server with error: ' . mysqli_connect_error());

    $query = mysqli_query($db, "SELECT numInStock FROM SOISInventoryList WHERE id =  $receivedString");

    if (!$query)
        echo "Could not find query.";
    

    while($row = mysqli_fetch_assoc($query))
        echo $row['numInStock'];
    

然后使用了jQuery的.change()函数,这样当下拉菜单中的项目发生变化时,我就可以调用单独的php文件了。

$(function()
$('#itemNameDropDown').change(function()
    var SelectedItem = $(this).val();
    //Sending the selected item value to the php file as JSON
    //Assuming that the php file is setup to consume $_GET variables
    $.get('grab-num-in-stock.php', "item": SelectedItem)
    .done(function(returnedData)
    //Assuming just a string is returned right now
        $('.numInStockCol').text(returnedData);
    );
);

);

【讨论】:

以上是关于动态下拉菜单在 div 中显示动态内容的主要内容,如果未能解决你的问题,请参考以下文章

选择下拉菜单后,动态输入字段无法正确显示

css+div实现左边显示菜单右边显示内容

如何制作 联想动态下拉菜单

布局中的 CakePHP 动态菜单内容

使用下拉菜单动态过滤 Wordpress 帖子(使用 php 和 ajax)

Wordpress 选项页面中动态生成的下拉菜单