0

誰かがこのコードで私を助けてくれますか、私は何かが欠けていますが、何がわかりません。最初のリストの項目の 1 つを選択すると、次のボックスが表示されますが、選択するオプションはありません。3 番目のオプションでも同じですが、今回はボックスが表示されません。

合計で約 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 つのテーブルがあります

ID、国、価格の 3 つの列を持つ国と呼ばれる 1 番目のテーブル

id、country_id、state_name、price の 4 つの列を持つ state という名前の 2 番目のテーブル

id、country_id、state_id、city_name、price の 5 つの列を持つ city という 3 番目のテーブル

4

1 に答える 1

0

findState.php と findCity.php の両方で、選択リストが変更されたときに javascript 関数 getZone を呼び出しますか? そして、その関数をどこでも宣言したことがわかりません。

そして、州と都市の両方の選択リストを同じ 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>";
?>

問題は、国IDをhtml select要素に挿入しようとしていることをphpが認識しないことです。すべてをエコーアウトすることで、これはより簡単になるはずです。

于 2012-04-24T13:09:07.643 に答える