Bootstrap 4.0 Version
https://getbootstrap.com/docs/4.0/getting-started/introduction/
https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css
angularjs CDN
https://angularjs.org/ Version 1.8.2 https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js
CREATE TABLE `countries` (
`id` int(6) NOT NULL,
`value` varchar(250) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `countries` (`id`, `value`) VALUES
(1, 'Afghanistan'),
(171, 'Philippines'),
(227, 'United States of America');
ALTER TABLE `countries`
ADD PRIMARY KEY (`id`);
ALTER TABLE `countries`
MODIFY `id` int(6) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=228;
CREATE TABLE `state` (
`id` int(11) NOT NULL,
`name` varchar(150) NOT NULL,
`country_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `state` (`id`, `name`, `country_id`) VALUES
(1, 'ARMM', 171),
(2, 'Bicol', 171),
(3, 'Central Luzon', 171),
(4, 'Central Mindanao', 171),
(5, 'Alabama', 227),
(6, 'Alaska', 227),
(7, 'Arizona', 227),
(8, 'California', 227),
(9, 'Florida', 227);
ALTER TABLE `state`
ADD PRIMARY KEY (`id`);
ALTER TABLE `state`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
index.html
//index.html
<!DOCTYPE html>
<html>
<head>
<title>AngularJS PHP Mysql Dynamic Dropdown List</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />
</head>
<body>
<div class="container" style="width:650px;">
<h3 align="center">AngularJS PHP Mysql Dynamic Dropdown List</h3>
<br />
<div ng-app="appdynamicdropdown" ng-controller="CTRdynamicdropdown" ng-init="loadCountry()">
<select name="country" ng-model="country" class="form-control" ng-change="loadState()">
<option value="">Select Country</option>
<option ng-repeat="country in countries" value="{{country.id}}">{{country.value}}</option>
</select>
<br />
<select name="state" ng-model="state" class="form-control">
<option value="">Select State</option>
<option ng-repeat="state in states" value="{{state.id}}">
{{state.name}}
</option>
</select>
</div>
</div>
<script>
var app = angular.module("appdynamicdropdown",[]);
app.controller("CTRdynamicdropdown", function($scope, $http){
$scope.loadCountry = function(){
$http({
method: 'GET',
url: 'load_country.php'
}).then(function (data){
console.log(data)
$scope.countries = data.data;
},function (error){
console.log(error, 'can not get data.');
});
}
$scope.loadState = function(){
$http({
method: 'POST',
url: 'load_state.php',
data: { country_id: $scope.country }
}).then(function (data){
console.log(data)
$scope.states = data.data;
},function (error){
console.log(error, 'can not post data.');
});
}
});
</script>
</body>
</html>
load_country.php
//load_country.php
<?php
$connect = mysqli_connect("localhost", "root", "", "testingdb");
$output = array();
$query = "SELECT * FROM countries ORDER BY value ASC";
$result = mysqli_query($connect, $query);
while($row = mysqli_fetch_array($result))
{
$output[] = $row;
}
echo json_encode($output);
?>
load_state.php
//load_state.php
<?php
$connect = mysqli_connect("localhost", "root", "", "testingdb");
$output = array();
$data = json_decode(file_get_contents("php://input"));
$query = "SELECT * FROM state WHERE country_id='".$data->country_id."' ORDER BY name ASC";
$result = mysqli_query($connect, $query);
while($row = mysqli_fetch_array($result))
{
$output[] = $row;
}
echo json_encode($output);
?>