Вы можете выбрать страны и их столицы из базы данных, используя следующий код в php
//This is where you put the fetched data
$entries = Array();
//Make new connection
$connection = new mysqli("127.0.0.1", "username", "password", "databasename");
//Create prepared statement
$statement = $connection->prepare("SELECT `country`, `capital` FROM `table`");
$statement->bind_result($country, $capital);
//Put the fetched data in the result array
while($statement->fetch()) {
$entry = Array();
$entry['country'] = $country;
$entry['capital'] = $capital;
$entries[] = $entry;
}
//Close the statement and connection
$statement->close();
$connection->close();
Далее вы создаете объекты HTML select
. Важно, чтобы порядок стран оставался таким же, как порядок столиц.
<!-- Country selection -->
<select id="select-country">
<?php $i = 0;
foreach ($entries as $c) { ?>
<option data-country="<?php echo $i++; ?>"><?php echo $c['country'] ?></option>
<?php } ?>
</select>
<!-- Capitals select -->
<select id="select-capital">
<?php $i = 0;
foreach ($entries as $c) { ?>
<option data-capital="<?php echo $i++ ?>"><?php echo $c['capital'] ?></option>
<?php } ?>
</select>
Наконец, вы добавляете прослушиватель событий в select
с идентификатором select-country
, где вы слушаете событие change
. После вызова вы изменяете выбранный индекс второго select
на индекс первого. Вот почему важно, чтобы порядок не изменился.
<script>
document.getElementById('select-country').addEventListener('change', function () {
document.getElementById('select-capital').getElementsByTagName('option')[this.selectedIndex].selected = true;
});
</script>