php - 具有 PHP 和 MySQL 的多个依赖选择框

标签 php javascript mysql ajax

好的,所以要么我不能正确地搜索网络,要么我不能理解我的搜索结果的意义,但是经过几天的搜索和尝试自己做,我仍然没有简单的和可以理解的答案!

我有一个带选择框的航类搜索表单。 选择框结果通过 PHP 从 MySQL 填充。

例子:

前飞:

Departure city - "London"

Destination city - All cities exept London

Flight date - All flight dates for flight London->Forward Destination City

向后飞行:

Departure city - Again all cities exept London

Destination city - All cities exept Backward Departure City

Flight date - All flight dates for flight Backward Departure City->Backward Destination City

我只使用 PHP 和表单 GET 方法制作此表单没问题,但是,当然,我想摆脱页​​面重新加载。显而易见的解决方案 - AJAX。

我的方法:

  1. 在选择框上使用 onChange 事件调用带有属性 'this.value' 的 javascript 函数
  2. javascript 函数使用 GET 方法向服务器(.php 文件)发送 XMLHttpRequest
  3. .php 文件包含带有 MySQL 请求的函数,使用简单的“if ($_GET['value_sent_with_javascript_function'])”调用
  4. javascript 函数将 php 响应放在一个 div 中 - document.getElementById("div_id").innerHTML=xmlhttp.responseText;

这适用于两个文件(第一个是“父”,第二个 - “子” - 根据“父”框选择的值填充)。但是,如果我想使用相同的方法来填充第三个字段(依赖于“子项”的字段),那是行不通的。由于我不是 JavaScript 专家,所以我无法弄清楚这一点。

我打赌有一个简单的解决方案!

最佳答案

一个简单的例子,应该让你上路:

Main.php 文件

    <script type="text/javascript">
    function loadXMLDoc(step)
    {
        var showPage;
        var rrestultBox;

        if (step==1)
        {
            showPage = 'destination.php?select=' + document.getElementById('departure').value;
            resultBox = 'destinationBox';
        }
        if (step==2)
        {
            showPage = 'times.php?select=' + document.getElementById('destination').value;
            resultBox = 'timesBox';
        }
        var xmlhttp;
        if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        } else {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
            xmlhttp.onreadystatechange=function()
        {

        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById(resultBox).innerHTML=xmlhttp.responseText;
        }
    }
        xmlhttp.open("GET",showPage,true);
        xmlhttp.send();
    }
</script>
<form name="selectBoxes">
    <select name="departure" id="departure" onchange="loadXMLDoc(1);">
        <option value="sydney">Sydney</option>
        <option value="canberra">Canberra</option>
        <option value="Melbourne">Melbourne</option>
    </select>
</form>
<div id="destinationBox"></div>
<div id="timesBox"></div>

destination.php

<form name="selectBoxes">
    <select name="destination" id="destination" onchange="loadXMLDoc(2);">
        <option value="sydney">Sydney</option>
        <option value="canberra">Canberra</option>
        <option value="Melbourne">Melbourne</option>
    </select>
</form>

times.php 文件

<form name="selectBoxes">
<select name="times" id="times"">
    <option value="">1pm</option>
    <option value="">2pm</option>
    <option value="">3pm</option>
</select>

观看实际操作:here

**已更新,忘记添加'destination.php'

关于php - 具有 PHP 和 MySQL 的多个依赖选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858664/

相关文章:

php - Doctrine2 自动生成类中的自定义函数

javascript - 在屏幕加载时打开 javascript,然后单击

javascript - 如何用不同的单词替换字符串中的多个相同单词

php - Magento -> 我希望管理员中的产品网格显示在前端

php - 使用 Datatables v1.10.0 进行服务器端处理

php - 如何将数据库中所有表中的值插入到一张表中

javascript - 如何检测元素何时滚动到视口(viewport)中

php - MYSQL无法选取点间距离(lat,lng)=0的记录

MySQL 自然排序

mysql - SSMA MySql 到 MsSql 空值错误