2012-04-24 6 views
0

Может кто-то, пожалуйста, помогите мне с этим кодом, я что-то пропустил, но не могу понять, что. Когда вы выбираете один из элементов в первом списке, он отображает следующий флажок, но нет никаких параметров для выбора, а то же самое и с 3-й опцией, хотя на этот раз я даже не получаю окно.AJAX несколько выпадающих списков с обновлением цены

Мне нужно около 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-мя столбцами идентификатор, страна и цена

второй таблице называется состояние с 4-мя колоннами идентификатор, COUNTRY_ID, state_name и цена

и 3-й стол, называемый городом с 5 колонками id, country_id, state_id, city_имя и цена

+0

Правильно ли выполняются ваши SQL-запросы и возвращаются результаты? – weenoid

+0

Привет, weenoid, я так думаю, если я изменяю $ query = "SELECT state_name FROM state WHERE country_id = '$ country'"; to $ query = "SELECT state_name FROM state WHERE country_id = '1'"; он приносит выбор вверх, он просто не будет работать автоматически при выборе в раскрывающемся списке. – Dan

ответ

0

Как в findState.php, так и в findCity.php вы вызываете функцию javascript getZone, когда изменяются selectlists? И я не вижу, чтобы вы заявили эту функцию где угодно.

И вы добавляете и список выбора состояния и города с тем же идентификатором. Я не думаю, что это причина ваших проблем, но это может быть позже.

EDIT:

кажется вы передаете идентификатор страны в переменной называется COUNTRY_NAME, но вы пытаетесь получить к нему доступ в PHP по стране и то же самое происходит с findCity

EDIT 2:

Try изменив 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 не распознает, что вы пытаетесь вставить I ID страны элемент html select. Избавляясь от всего, это должно быть проще.

+0

Спасибо за ответ, getZone был потому, что я забыл изменить его на getCity, а затем в getCity.php у него будет другой. Я не заметил двойной идентификатор, который изменился, но все еще есть проблема. – Dan

+0

проверить мое обновление – Falle1234

+0

Hi Falle Я изменил то, что вы упомянули, но это не имеет никакого значения. Просто добавьте часть, о которой вы упоминали, только во второй функции, см. Ниже, что я изменил. Do ............. функция getCity (country_Id, state_id) { var strURL = "findCity.php ? страна = "+ cOUNTRY_ID +" и состояние = "+ state_Id; var req = getXMLHTTP(); if (req) { – Dan

Смежные вопросы