【问题标题】:How to filter one combo-box collection depending on the selected item of another?如何根据另一个的选定项目过滤一个组合框集合?
【发布时间】:2011-10-20 16:37:08
【问题描述】:

在表单的 php 页面上,一个组合框包含来自 MySQL 表customer. 的客户列表,另一个组合框包含来自invoice 表的invoiceno 字段,分别对应于客户记录。

我想从第一个组合框中选择一个客户,并根据客户从第二个组合框中过滤 invoiceno。谁能帮我完成这个?

例如,如果我选择 customer1,第二个组合框应该显示所有 invoiceno 对应于 customer1。我想在不刷新、重新加载或发布页面的情况下执行此操作。如果我在 php 变量 $customer 中获得第一个选择,那对我来说就足够了。谢谢!

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    AJAX 是你的朋友:

    1. 捕获第一个组合框的 onchange 事件

    2. 然后通过 AJAX 将选中项的值发送到你的 PHP 脚本

    3. 您的 PHP 脚本从数据库中加载相应的值并返回它们(例如 JSON 格式)

    4. 最后通过 JavaScript 显示/插入返回的数据。

    伪代码:

    JavaScript:

    function displayData(json)
    {
      // Do something
    }
    document.getElementById("your-combobox").addEventListener("change", function()
    {
      var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function()
      {
        if (xhr.readyState==4 && xhr.status==200)
        {
          displayData( JSON.parse(xhr.responseText) ); // Call displayData with the JSON
        }
      };
      xhr.open("GET", "your-script.php?combobox1="+encodeURIComponent(this.value));
      xhr.send(null); // Send AJAX request
    });
    

    PHP:

    <?php
    
    if (!isset($_GET['combobox1'])) exit('{}');
    
    $data = GetDataFromDB_AsArray();
    
    echo json_encode($data);
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 2013-04-25
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      相关资源
      最近更新 更多