2012-05-22 101 views
1

我有2個下拉菜單。第一個我填充了可能的大洲,並希望第二個下拉菜單包括所有國家,具體取決於在第一個菜單中選擇的大洲。我只有1個MySQL表與列:大陸 - >國家。目前,即使選擇了一個大陸,也有來自各大洲的所有國家。感謝您的幫助! 這裏是我的代碼:從數據庫填充多個依賴的下拉菜單

HTML

<input type="text" class="autosuggest" id="autosuggest2" placeholder="Select Country..."> 
<div class="country"> 
<ul class="result" id="result2"></ul> 
</div> 
<input type="text" class="autosuggest" id="autosuggest3" placeholder="Select Area..."> 
<div class="area"> 
<ul class="result" id="result3"></ul> 
</div> 

的jQuery /阿賈克斯

$(document).ready(function() { 
$('#autosuggest1').keyup(function() { 
    var continent = $(this).attr('value'); 
    $.post('php/dropdown.php', {continent:continent}, function(data) { 
     $('#result1').html(data); 

     $('.result li').click(function() { 
      var result_value = $(this).text(); 
      $('#autosuggest1').attr('value', result_value); 
      $('#result1').html(''); 
      $('#result1').focusout(''); 
     }); 
    }); 
}); 

$('#autosuggest2').keyup(function() { 
    var country = $(this).attr('value'); 
    $.post('php/dropdown.php', {country:country}, function(data) { 
     $('#result2').html(data); 

     $('.result li').click(function() { 
      var result_value = $(this).text(); 
      $('#autosuggest2').attr('value', result_value); 
      $('#result2').html(''); 
      $('#result2').focusout(''); 
     }); 
    }); 
}); 
}); 

PHP

require_once '../connect/connectdropdown.php'; 

if (isset($_POST['continent']) == true && empty($_POST['continent']) == false) { 
$continent = mysql_real_escape_string($_POST['continent']); 
$query = mysql_query("SELECT DISTINCT `continent` FROM `area` WHERE `continent` LIKE '$continent%'"); 
while (($row = mysql_fetch_assoc($query)) !== false) { 
    echo '<li>', $row['continent'], '</li>'; 
} 
} 

if (isset($_POST['country']) == true && empty($_POST['country']) == false) { 
$country = mysql_real_escape_string($_POST['country']); 
$query = mysql_query("SELECT DISTINCT `country` FROM `area` WHERE `country` LIKE '$country%'"); 
while (($row = mysql_fetch_assoc($query)) !== false) { 
    echo '<li>', $row['country'], '</li>'; 
} 
} 
+1

編輯:哦,等等,你是國家查詢不在大陸上過濾。在國家查詢中,您需要通過國家和洲,以便您可以過濾continent ='blah'和國家LIKE'blah%' – Corbin

+0

感謝Corbin!其中'continent' ='南美洲'AND'country' LIKE'$ country%'「);其中'continent' ='大洋洲'AND'country' LIKE'$ country%'」);這是否意味着我需要每個大陸的查詢? – Hobby99

+0

你需要在南美和大洋洲的報價(如果你接受它作爲用戶輸入,不要忘記使用mysql_real_escape_string),但這就是主意。根據你在做什麼,你可能應該考慮數據庫規範化。 (IE擁有continents表,包含continent_id和name,然後是country_id,continent_id和name的國家表。) – Corbin

回答

1

我不知道,如果你仍然對這個。無論如何,我會建議幾件事:

只做一個查詢,將它傳遞給json,並將其提供給javascript。

PHP

require_once '../connect/connectdropdown.php'; 
$id=0; 
$result=array(); 
$query = mysql_query("SELECT * FROM `area` "); 
while (($row = mysql_fetch_assoc($query)) !== false) { 
    $result[$id]=$row; 
    $id++; 
} 
echo json_encode($result); 

的Javascript

$(document).ready(function() { 
     var $mysqlData; 
     $.post('php/dropdown.php', {continent:continent}, function(data) { 

     //Json Data from server: 
     alert('JSON data: '+data) 
     //you can transform the data from PHP-Json to Javascript Object 
     $mysqlData = jQuery.parseJSON(data) 
     //now you can access your data like: 
     alert ('My first continent: '+$mysqlData[0].continent+' and it\'s first country: '+$mysqlData[0].country) 
     }); 

     $('#autosuggest1').keyup(function() { 
      //Now you can use $mysqlData inside your logic 
     }) 

     $('#autosuggest2').keyup(function() { 
      //You can use $mysqlData here too 
     }) 

}); 

我沒有測試此代碼,可能會有一些錯誤,但我建議你的邏輯取。