1

2 つのドロップダウン メニューがあります。最初に可能な大陸を入力し、最初のメニューで選択された大陸に応じて、すべての国を含むものに 2 番目のドロップダウンが必要です。列を持つ mysql テーブルが 1 つしかありません: 大陸 --> 国。現在、大陸を選択した場合でも、ドロップダウンにはすべての大陸のすべての国が表示されます。ご協力ありがとうございました!これが私のコードです:

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

$(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>';
}   
}
4

1 に答える 1

1

あなたはまだこれに乗っているのだろうか。とにかく、私が提案するいくつかのこと:

クエリを 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
      })

});

私はこのコードをテストしませんでした.いくつかのエラーがあるかもしれませんが、私があなたに勧めるロジックです.

于 2012-05-23T21:27:14.137 に答える