如何根据另一个组合框的选定项筛选一个组合框集合?

时间:2011-10-20 16:37:08

标签: php mysql

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

我想从第一个组合框中选择一个客户,并根据客户从第二个组合框中过滤invoiceno。任何人都可以帮助我实现这个目标吗?

例如,如果我选择customer1,则第二个组合框应显示与customer1相对应的所有invoiceno。我想这样做而不刷新,重新加载或POST页面。如果我在php变量$customer中获得第一个选择,那对我来说已经足够了。谢谢!

1 个答案:

答案 0 :(得分:1)

AJAX是你的朋友:

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

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

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

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

  5. 伪代码:

    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);
    
    ?>