2012-04-24 8 views
0

誰かがこのコードで私を助けてください、私は何かが不足していますが、何が分かりませんか?最初のリストのアイテムの1つを選択すると、次のボックスが表示されますが、このオプションを選択するオプションはありません。AJAXの複数のドロップダウンリストと価格の更新

合計で約10個のドロップダウンリストが必要です。各選択がSQLテーブルの価格列を使用して下部の価格を更新するように選択された後で(私はこれを行う方法はわかりません)偉大な、少なくとも4時間今これを見ていると私はどこにも得ていない。ここでfindCity.phpだここだ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> 

<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> 

:JSスクリプトここ

<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> 

です:

おかげでここ

はhtmlです

<?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つのテーブル4列 ID、COUNTRY_ID、STATE_NAMEと価格との状態と呼ばれる3列 ID、国や価格

第二表と国と呼ばれる

第一のテーブルを持ってい

と5列の都市と呼ばれる第3のテーブル id、country_id、state_id、city_nameおよび価格

+0

SQLクエリが正しく実行され、結果が期待通りに返されていますか? – weenoid

+0

こんにちはウェイレノイド、私はそう思う、もし私が$ query = "SELECT state_name FROM state where country_id = '$ country'"; $ query = "SELECT state_name FROM state where country_id = '1'";それは選択肢を持ち上げ、ドロップダウンリストから選択すると自動的には機能しません。 – Dan

答えて

0

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

州と都市の選択リストを同じIDで追加します。私はそれがあなたの問題の原因だとは思わないが、それは後になる可能性がある。

EDIT:

あなたがCOUNTRY_NAMEという変数に国IDを提出するようだが、あなたは国によってPHPでそれにアクセスしようと同じことがfindCity

EDIT 2で発生します:

てみてくださいこの

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

にごfindstate.phpを変更する問題は、PHPを使用して、国識別Iを挿入しようとしていることを認識していないということのようですHTML要素を選択します。すべてをエコーアウトすると、これは簡単になります。

+0

返事をありがとう、私はgetCityに変更することを忘れてgetCity.phpに別のものを持っているので、getZoneがあった。私はダブルIDに気づいていない、今変更されたが、まだ問題がある。 – Dan

+0

私の更新を確認してください – Falle1234

+0

こんにちはFalleあなたが言ったことを変えましたが、何の違いもありませんでした。あなたが言及した部分を2番目の関数だけに入れて、私が何を変えたかを見てください............. function getCity(country_Id、state_id){ var strURL = "findCity.php ?country = "+ country_Id +"&state = "+ state_Id; var req = getXMLHTTP(); if(req){ – Dan

関連する問題