当前位置: 首页 > 面试题库 >

链接选择框(国家,州,城市)

祁驰
2023-03-14
问题内容

我有一个php页面,我想从国家,州和城市列表中选择一个位置。该页面包含用于用户注册的其他数据(名称,电子邮件等),因此在选择框刷新时,我不想刷新页面或其他任何内容。当前,每个选择框仅加载国家,州或城市的完整列表。我希望将它们链接起来,所以我没有重复的城市名称(不同州或国家/地区的名称相同)。

位置存储在数据库中,并在加载时传递到页面。然后将它们循环并添加到选择框中:

<tr>
    <label>Select State: </label>
    <select name="state" id="state_select" style="width:200px;">
        <option value="">Select a State or Province</option>
        <?php while($state = $states->fetchObject()) { ?>
             <option value="<?php echo $state->id; ?>"><?php echo $state->title; ?></option>
        <?php } ?>
    </select>
</tr>

数据库结构非常简单:

Country : | id | title |
State : | id | title | country_id |
City : | id | title | state_id |

我可以在.onChange()语句中想到逻辑,该逻辑
清除链接的选择框并附加新选项,但是我对基于Web的语言非常陌生,无法正常工作。以下是我的尝试,但我想我无法轻松在js和php之间进行引用。注意:我知道此代码段确实很糟糕,并且包含错​​误。我的想法是要具有执行以下操作的脚本功能:

  1. 清除州选择框中的所有选项(假设您已经更改了国家选择)
  2. 遍历提供的状态列表(控制器传递的SQL查询)
  3. 对于每个具有“ country_id”与所选country_id匹配的条目,在“状态”选择框中放置一个选择选项

^如果可能的话,这太棒了。任何其他方法也都不错,但是我尝试使用ajax和JSON方法,但老实说我不理解它们。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>    
<script>
    $( document ).ready(function() {
        $('#country_select').change(function(){
            $('#state_select').empty();
            //for each state
            <?php while($state = $states->fetchObject()) {
                $temp = $('#country_select').val()); 
                //if country matches selected country 
                if($state->country_id == $temp){
                    // create an option ?>
                    var option = '<option value="">Test</option>';
                <?php// } 
                //then append that option?>
                 <?php// } ?>
             $('#state_select').append(option);
           });
        });
    </script>

问题答案:

$(’#mobile_phone_network option:selected’)。val()我没有经过测试,但是应该可以使用。很简单,它将给您一些想法

**HTML**
<div id="countryWrap"><select id="country" name="country"></select></div>
<div id="stateWrap"><select id="state" name="state"></select></div>
<div id="cityWrap"><select id="city" name="city"></select></div>

<script>
$(document).ready(function(){
  $('#country').change(function(){
    loadState($(this).find(':selected').val())
  })
  $('#state').change(function(){
    loadCity($(this).find(':selected').val())
  })


})

function loadCountry(){
        $.ajax({
            type: "POST",
            url: "ajax/ajax.php",
            data: "get=country"
            }).done(function( result ) {
                $(result).each(function(){
                    $("#country").append($('<option>', {
                        value: this.id,
                        text: this.name,
                    }));
                })
            });
}
function loadState(countryId){
        $("#state").children().remove()
        $.ajax({
            type: "POST",
            url: "ajax/ajax.php",
            data: "get=state&countryId=" + countryId
            }).done(function( result ) {
                $(result).each(function(){
                    $("#state").append($('<option>', {
                        value: this.id,
                        text: this.name,
                    }));
                })
            });
}
function loadCity(stateId){
        $("#city").children().remove()
        $.ajax({
            type: "POST",
            url: "ajax/ajax.php",
            data: "get=city&stateId=" + stateId
            }).done(function( result ) {
                $(result).each(function(){
                    $("#city").append($('<option>', {
                        value: this.id,
                        text: this.name,
                    }));
                })
            });
}

// init the countries
loadCountry();
</script>




**ajax.php**

$countryId = isset($_POST['countryId'])  ? $_POST['countryId'] : 0;
$stateId = isset($_POST['stateId'])  ? $_POST['stateId'] : 0;
$command = isset($_POST['get'])  ? $_POST['get'] : "";

switch($command){
case "country":
$statement = "SELECT id, name FROM country";
break;
case "state":
$statement = "SELECT id, name FROM state WHERE country_id=".(int)countryId;
break;
case "city":
$statement = "SELECT id, name FROM country WHERE state_id=".(int)stateId;
break;
default:
break;
}

$sth = $dbh->prepare($statement);
$sth->execute();
$result = $sth->fetchAll();

echo json_encode($result);
exit();


 类似资料:
  • 问题内容: 我正在尝试实现看似非常简单的东西,并且到目前为止,我一直在反对它。 我希望得到的最终结果是与“国家选择”下拉列表绑定的“国家选择”下拉列表,这样,当选择了给定的国家/地区时,如果知道了状态,则这些状态将显示在选择下拉列表中,如果该国家没有已知的州,然后显示一个文本字段。 我觉得我快到了。此时,该界面实际上将根据人员所在的国家/地区生成该州的列表,除非它拒绝动态更新下拉列表。 我收集国家

  • 在浏览了一下网站之后,我已经相当接近了下面所示的代码。div显示正常,但是如果我在美国div或加拿大div中放入一个选择框,它会破坏它。 因此,对于这个显示建议,我只是在这个示例中留下文本,以便有一个工作示例。任何帮助找出为什么它与一个选择框内的美国和加拿大div将非常感谢。

  • 提示 页面模板源码免费开源,在uni-app的插件市场uView的 示例项目 中,在右上角选择"使用 HBuilderX 导入示例项目" 或者 "下载示例项目ZIP", 在HX运行项目即可看到和使用模板。 这个界面功能,为城市选择示例,此仅为参考模板,如果演示达不到您想要的效果,请自行修改即可。

  • 问题内容: 我有一个按BusinessBranch模型输入的城市外键。我的城市模型还具有州和县模型的州和国家外键。我很难在BusinessBranchInline中显示州和国家/地区下拉菜单。实现这一目标的最佳方法是什么?如果下拉列表根据其父项的值过滤项目,那就太好了。 问题答案: 有了一点黑客,这是相当可行的。 在以下示例中,使用County代替State和Municipality代替City。

  • 使用指南 组件介绍 城市选择组件 引入方式 import { CitySelect } from 'feart'; components: { "fe-city-select": CitySelect, }, 代码演示 基础用法 <fe-city-select @select="selected" /> export default { methods: { sele

  • 一个城市选择的选择器,可以选择省份、城市。包含国内主要城市数据. [Code4App.com]