【问题标题】:Update OPTIONS in SELECT B from MYSQL when SELECT A is changed in form当 SELECT A 的形式改变时,从 MYSQL 更新 SELECT B 中的 OPTIONS
【发布时间】:2012-03-13 18:18:19
【问题描述】:

如何在我的表单中填充一个选择框,其中仅包含与另一个选择框中选择的组匹配的产品?

我在 mySQL 数据库中使用两个表:

GROUP "node"
nid | title
g1   | Group 1
g2   | Group 2

GROUP "products"
id  | name        | parent_id | group_id
p1  | Product 1   | p1        | g1
p2  | Product 2   | p1        | g1
p3  | Product 3   | p3        | g1
p4  | Product 4   | p4        | g2
p5  | Product 5   | p5        | g2
p6  | Product 6   | p5        | g2

使用表单添加产品时,管理员应该能够选择 GROUP 和 PARENT PRODUCT。这与我的代码一起运行:

<li>
                <label for="group">Group</label>
                <select name="group">
                    <?php
                    //get group names
                    $result = mysql_query("SELECT nid, title FROM node WHERE type = 'group';");
                        while($row = mysql_fetch_array($result)) { ?>

                            <option value="<?php echo $row['nid']; ?>"><?php echo $row['title']; ?></option>


                        <?php } ?>
                </select>
            </li>


            <li>
                <label for="parent">Parent</label>
                <select name="parent">
                <?php
                //get parent names
                $result = mysql_query("SELECT id, name, group_id FROM products");
                    while($row = mysql_fetch_array($result)) {?>

                        <option value="<? echo $row['id']; ?>"><?php echo $row['name']; ?></option>

                    <?php }?>
                </select>
            </li>

但是,我希望 PARENT(父产品)选择框仅填充属于所选组的产品。

在示例数据库中,选择的“组 1”将填充产品 p1、p2 和 p3。选择的“第 2 组”将填充产品 p4、p5 和 p6。

我知道直接使用 PHP 无法做到这一点,但需要某种 javascript 来检测两个表中的 group_id / nid 并仅显示具有该 group_id 的产品。

最好的方法是什么?我怎样才能轻松做到这一点?

【问题讨论】:

    标签: php javascript mysql forms


    【解决方案1】:

    视情况而定。如果你想使用Javascript,你可以使用AJAX。

    为此,您首先将一个函数绑定到您第一次选择的“更改”事件。

    使用 jQuery 你可以创建一个函数并绑定它:

    pull_products_by_group = function(this) {
      // Use AJAX here
    }
    
    $('select[name="group"]').change(pull_products_by_group);
    

    然后您在此函数中使用 AJAX 来调用一些将从产品表中选择的新脚本。您可以让此函数返回 JSON(通常推荐)或直接 HTML(如果您坚持的话)。

    如果您不想使用javascript,那么您必须添加一个按钮,用户在选择组后将单击该按钮,该按钮将自行重新加载(php脚本),该脚本将接收所选组,您可以重新显示同一页面但这次是产品列表。

    【讨论】:

    • 听起来不错,但我不熟悉 AJAX 以及使用什么代码从数据库中获取信息并将其与所选内容相匹配。
    • 我建议您熟悉 AJAX,因为复制/粘贴您不懂的代码对您没有帮助。它不起作用,您将不知道为什么。我建议从这里开始:codeproject.com/Articles/31155/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2011-12-24
    • 2011-10-15
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多