【问题标题】:MySQLI Showing dropdown options based on previous selection and tablesMySQLI 根据先前的选择和表格显示下拉选项
【发布时间】:2016-03-09 22:10:13
【问题描述】:

我有两张桌子——公司和客户。他们每个人都有一个标记为company_id 的相同行,因此我可以为每个客户分配一家公司。

首先创建一个公司。

然后创建客户并在此过程中与公司关联。

然后创建一个订单...

对于订单,我有一个名为 orders 的表。向表中插入数据时,我有一个带有两个下拉框的表单。第一个下拉菜单是选择订单所针对的公司。这是使用以下内容填充的:

$getCompany = mysqli_query($db, "SELECT * FROM companies ORDER BY company_name ASC");

<label for="company_id">Company</label>
<select class="form-control" name="company_id" id="company_id">
    <option disabled selected></option>
    <?php

        // If there are results, output each row.
        if($getCompany) {
            while($company = mysqli_fetch_assoc($getCompany)) { ?>
                <option value="<?php echo $company['company_id']; ?>">
                    <?php echo $company['company_name']; ?>
                </option>
            <?php }
        } 
    ?>
</select>

第二个下拉菜单是相同的,但调用的是客户的名字。

$getClient  = mysqli_query($db, "SELECT * FROM clients ORDER BY client_fname ASC");

<select class="form-control" name="client_id" id="client_id">
    <option disabled selected></option>
    <?php

        // If there are results, output each row.
        if($getClient) {
            while($client = mysqli_fetch_assoc($getClient)) { ?>
                <option value="<?php echo $client['client_id']; ?>">
                    <?php echo $client['client_fname']." ".$client['client_lname']; ?>
                </option>
            <?php }
        } 
    ?>
</select>

如果我从第一个下拉列表中选择 CompanyA,我如何才能在第二个下拉列表中仅显示与该选择关联的客户?

【问题讨论】:

  • 使用第一个选择中的数据,您将为第二个选择运行查询并显示基于该查询的客户列表。

标签: php jquery mysqli


【解决方案1】:

像这样使用ajax

Javascript

 $('.company_id').change(function()
   {
       var company_id = $('.company_id').val();
        var request = $.ajax({
                url: "your_ajax.php",
                method: "POST",
                data: {
                    company_id: company_id,
                    action: 'get_clients_by_company_id'

                }
            });
            request.done(function (msg) {
                $('#client_id').val(msg);
            });

   });

AJAX 中的 PHP 代码

 <?php
if (isset($_POST['action']) and $_POST['action'] == 'get_clients_by_company_id') {
    $company_id = $_POST['company_id'];
    if (!empty($company_id)) {
        $getClient = mysqli_query($db, "SELECT * FROM clients WHERE company_id = '$company_id' ORDER BY client_fname ASC");
        while ($client = mysqli_fetch_assoc($getClient)) {
            ?>
            <option value="<?=$client['client_id']; ?>">
                <?=$client['client_fname'] . " " . $client['client_lname']; ?>
            </option>

            <?php
        }
    }
}
?>

【讨论】:

  • 为什么 OP 应该尝试这个? 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多