0

有人可以帮我处理这段代码吗,我遗漏了一些东西,但不知道是什么。当您选择第一个列表中的一个项目时,它会弹出下一个框,但没有选项可供选择,并且与第三个选项相同,尽管这次我什至没有让该框出现。

我总共需要大约 10 个下拉列表,并且在选择每个选项后,使用 sql 表中的价格列更新底部的价格(我不知道该怎么做)所以你的所有帮助都会很棒,一直现在至少看了 4 个小时,我无处可去。

谢谢

这是html:

<body>
<select style="width: 150px;" name="country" id="add-event-dialog-country" onchange="getState(this.value)">
                <?php
                    echo "<option selected='selected' disabled='disabled'> Select Country</option>";
                    $result = mysql_query("SELECT DISTINCT country FROM country");
                    while($row = mysql_fetch_array($result)){
                       echo "<option value='".$row['country']."'>".$row['country']."</option>";
                    }
                ?>
           </select>
           <p id="statediv">
           <select style="width: 150px;" name="add-event-dialog-state" id="add-event-dialog-location" disabled="disabled">
                <option>Select State</option>
           </select>
           </p>
           <p id="citydiv">
           <select style="width: 150px;" name="add-event-dialog-city" id="add-event-dialog-city" disabled="disabled">
                <option>Select City</option>
           </select>
           </p>

Price =<br>
VAT = <br>
Total Price = <br>
</body>

这是js脚本:

<script language="javascript" type="text/javascript">
function getXMLHTTP() { 
    var xmlhttp=false;  
    try{
        xmlhttp=new XMLHttpRequest();
    }
    catch(e)    {       
        try{            
            xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e){
            try{
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(e1){
                xmlhttp=false;
            }
        }
    }

    return xmlhttp;
}

function getState(country_Id) {     

    var strURL="findState.php?country="+country_Id;
    var req = getXMLHTTP();

    if (req) {

        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                // only if "OK"
                if (req.status == 200) {                        
                    document.getElementById('statediv').innerHTML=req.responseText;                     
                } else {
                    alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                }
            }               
        }           
        req.open("GET", strURL, true);
        req.send(null);
    }       
}

function getCity(country_Id,state_id) {     

    var strURL="findCity.php?country_name="+country_Id+"&state_name="+state_Id;
    var req = getXMLHTTP();

    if (req) {

        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                // only if "OK"
                if (req.status == 200) {                        
                    document.getElementById('citydiv').innerHTML=req.responseText;                      
                } else {
                    alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                }
            }               
        }           
        req.open("GET", strURL, true);
        req.send(null);
    }       
}
</script>

这是 findState.php

<?php 
include 'classes.php';

$country = $_GET['country'];

$query="SELECT state_name FROM state WHERE country_id='$country'";
$result=mysql_query($query) or die(mysql_error());

?>
<select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog- location" onchange="getZone('<?=$country?>',this.value)">
<option selected='selected' disabled='disabled'>Select State</option>
<?php 
while($row = mysql_fetch_array($result)){
echo "<option value='".$row['state_name']."'>".$row['state_name']."</option>";}
?>
</select>

这是 findCity.php

<?php 
include 'classes.php';

$country_id = $_GET['country'];
$state_Id = $_GET['state'];

$query="SELECT city_name FROM city WHERE country_id='1' AND state_id='1'";
$result=mysql_query($query) or die(mysql_error());

?>
<select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog- location" onchange="getZone('<?=$country?>',this.value)">
<option selected='selected' disabled='disabled'>Select State</option>
<?php 
while($row = mysql_fetch_array($result)){
echo "<option value='".$row['city_name']."'>".$row['city_name']."</option>";}
?>
</select>

我的 SQL 数据库有 3 个表

第一个表称为国家,有 3 列 id、国家和价格

第二个表称为 state,有 4 列 id、country_id、state_name 和 price

第三个表名为 city ,包含 5 列 id、country_id、state_id、city_name 和 price

4

1 回答 1

0

In both findState.php and findCity.php you call the javascript function getZone when the selectlists changes? 而且我看不到您已在任何地方声明了该功能。

然后添加具有相同 ID 的州和城市选择列表。我不认为这是你的问题的原因,但它可能会在以后出现。

编辑:

似乎您在名为 country_name 的变量中提交了国家/地区 ID,但您尝试按国家/地区在 php 中访问它,findCity 也会发生同样的情况

编辑2:

尝试将您的 findstate.php 更改为此

<?php 
include 'classes.php';

$country = $_GET['country'];

$query="SELECT state_name FROM state WHERE country_id='$country'";
$result=mysql_query($query) or die(mysql_error());

$country = "'".$country."'";
echo '<select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog- location" onchange="getZone('.$country.',this.value)">';
echo "<option selected='selected' disabled='disabled'>Select State</option>";

while($row = mysql_fetch_array($result)){
echo "<option value='".$row['state_name']."'>".$row['state_name']."</option>";}
echo "</select>";
?>

问题似乎是 php 无法识别您正在尝试将国家/地区 ID 插入到 html 选择元素中。通过回显所有内容,这应该会更容易。

于 2012-04-24T13:09:07.643 回答