在php页面上的一种形式中,一个组合框包含来自MySQL表customer.
的客户列表。另一个组合框包含invoiceno
表中的invoice
字段,分别对应于客户记录。
我想从第一个组合框中选择一个客户,并根据客户从第二个组合框中过滤发票。谁能帮我做到这一点?
例如,如果我选择customer1,则第二个组合框应显示与customer1有关的所有invoiceno
。我想做到这一点而无需刷新,重新加载或发布页面。如果我在php变量$customer
中获得第一选择,对我来说就足够了。谢谢!
最佳答案
AJAX是您的朋友:
捕获第一个组合框的onchange事件
然后通过AJAX将所选项目的值发送到您的PHP脚本
您的PHP脚本从数据库加载相应的值并返回它们(例如JSON格式)
最后,您通过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);
?>