根据其他选择选项从DB中选择选项

时间:2013-08-15 07:16:50

标签: php javascript mysql

我有一个包含两个选择字段的表单,一个表示区域,另一个表示城市/村庄/等的名称。我有一个包含所有这些条目的数据库,格式如下:

id (int 11, ai)
region (varchar 50) 
city(varchar 50)

我在这里找到了一个脚本,这样你就可以选择不同的选项,但它是用JS制作的,我不知道如何根据我的需要调整它。我需要一个数据库,因为我有13.000多个条目,并且在代码中手动输入它们并不是一个好主意。这是我读过的主题的链接,它的解决方案也在其中一条评论中。

how to change a selections options based on another select option selected?

如果我需要在降级前编辑我的帖子,请告诉我。提前谢谢!

1 个答案:

答案 0 :(得分:1)

只需使用ajax,当一个选择更改从服务器获取数据以提供其他选择时。

<select class="select_one">
<?php /* render first select ?>
</select>
<select class="select_two"></select>
<script>
$(function() {

    $('.select_one').change(function() {
       var select = $('.select_two').empty();
       $.get('script.php', {region: $(this).val()}, function(result) {
           $.each(result, function(i, item) {
               $('<option value="' + item.value + '">' + item.name + '</option>').
                   appendTo(select);
           });
       });
    });
});
</script>

并且您script.php应该从db:

返回JSON
if (isset($_GET['region'])) {
    $sql = new mysqli('localhost','username','password','database');
    $region = mysqli_real_escape_string($sql,$_GET['region']);
    $query = "SELECT * FROM cities WHERE region = $region";
    $ret = $sql->query($query);
    $result = array();
    while ($row = $ret->fetch_assoc()) {
         $result[] = array(
             'value' => $row['id'],
             'name' => $row['city']
         );
    }
    echo json_encode($result);
}