У меня есть два выпадающих меню. Во-первых, вы выбираете страну, а во-вторых, вы можете выбрать город. Города должны отличаться в зависимости от выбранной страны. Обе страны и города загружаются из базы данных.
В базе данных есть две таблицы: следующие строки:
Это индекс:
<html>
<head></head>
<body>
<select>
<?php
$con=mysqli_connect("localhost","root","","database");
$result = mysqli_query($con,"SELECT * FROM countries");
while($row = mysqli_fetch_array($result)) {
echo '<option value="' .$row['countryId'] .'">' .$row['name'] .'</option>';
}
?>
</select>
<br />
<select>
<!-- Here goes select from countries -->
</select>
</body>
Как заполнить второй выбор?
Поместите какое-то имя в свой первый выбор, давайте назовите его здесь как first_select и вызовите второй флажок select как second_select
Надеюсь, это поможет вам
<script type="text/javascript">
$(document).ready(function() {
$("#first_select").change(function() {
$.get('getcities.php?first_select=' + $(this).val(), function(data) {
$("#second_select").html(data);
});
});
});
</script>
<form method="get">
<select name="first_select" id="first_select">
<?php
$con=mysqli_connect("localhost","root","","database") or die(mysqli_error());
$result = mysqli_query($con,"SELECT * FROM countries") or die(mysqli_error());
while($row = mysqli_fetch_array($result)) {
echo '<option value="' .$row['countryId'] .'">' .$row['name'] .'</option>';
}
?>
</select>
<select name="second_select" id="second_select"></select>
</form>
Создайте файл с именем getcities.php и
в getcities.php
$first_select= $_GET['first_select'];
$query = mysql_query("select * from cities where countryid = {$first_select}");
while($row = mysql_fetch_array($query)) {
echo "<option value='$row[cityid]'>$row[name]</option>";
}
Вам нужно будет использовать некоторую условную логику, назначить переменную для выбора, который они делают для своей страны, т.е. "CountryChoice", а затем для вашего второго раскрывающегося списка, иметь другое выражение, в котором перечислены все города с помощью countryChoice.
Немного что-то вроде этого:
<html>
<head></head>
<body>
<form method="post" action="/*YOUR ACTION */">
<select name='countryChoice' id='countryChoice'>
<?php
$con=mysqli_connect("localhost","root","","database");
$result = mysqli_query($con,"SELECT * FROM countries");
while($row = mysqli_fetch_array($result)) {
echo '<option value="' .$row['countryId'] .'">' .$row['name'] .'</option>';
}
?>
</select>
<br />
<select name='cityChoice' id='cityChoice'>
<?php
$countryChoice = $_POST['countryChoice'];
$con=mysqli_connect("localhost","root","","database");
$result = mysqli_query($con,"SELECT * FROM cities WHERE countryId='$countryChoice'");
while($row = mysqli_fetch_array($result)) {
echo '<option value="' .$row['countryId'] .'">' .$row['name'] .'</option>';
}
?>
</select>
</form>
Возможно, вам придется немного изменить его, я не работал с этим некоторое время. Но, надеюсь, это даст вам правильную идею.
Или, как упоминалось выше, вы можете использовать Ajax.