2012-05-22 102 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 
     }) 

}); 

我没有测试此代码,可能会有一些错误,但我建议你的逻辑取。