链式选择框(国家,州,市)
我有一个php页面,我想从国家,州和城市列表中选择一个位置。 该页面包含用户注册的其他数据(名称,电子邮件等),所以当刷新选择框时,我不想刷新页面或任何内容。 目前,每个选择框仅加载国家,州或城市的完整列表。 我希望它们被链接,所以我没有重复的城市名称(不同州或国家的同名)。
位置存储在数据库中,并在加载时传递给页面。 然后将它们循环并添加到选择框中:
Select a State or Province fetchObject()) { ?> <option value="id; ?>">title; ?>
数据库结构非常简单:
Country : | id | title | State : | id | title | country_id | City : | id | title | state_id |
我可以在.onChange()语句中考虑逻辑,该语句应该清除链式选择框并添加新选项,但我对基于Web的语言非常新,我无法正常工作。 下面是我的尝试,但我想我不能轻易地在js和php之间引用。 注意:我知道这个片段非常糟糕并且包含错误。 我的想法是有一个脚本函数,它执行以下操作:
- 清除状态选择框中的所有选项(假设您已更改国家/地区选择)
- 循环提供状态列表(控制器传递的SQL查询)
- 在状态选择框中为每个具有与所选country_id匹配的“country_id”的条目添加选择选项
如果可能的话,这将是太棒了。 任何其他方法也会很好,但我尝试使用ajax和JSON方法,老实说我不理解它们。
$( document ).ready(function() { $('#country_select').change(function(){ $('#state_select').empty(); //for each state fetchObject()) { $temp = $('#country_select').val()); //if country matches selected country if($state->country_id == $temp){ // create an option ?> var option = 'Test'; $('#state_select').append(option); }); });
$(’#mobile_phone_network选项:选中’)。val()我没有测试,但它应该工作。 它很简单,它会给你一些想法
**HTML** **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();
HTML Tag :