Как я могу динамически заполнить выпадающее меню в зависимости от некоторых других выпадающих меню?

0

У меня есть два выпадающих меню. Во-первых, вы выбираете страну, а во-вторых, вы можете выбрать город. Города должны отличаться в зависимости от выбранной страны. Обе страны и города загружаются из базы данных.

В базе данных есть две таблицы: следующие строки:

  • страны
    • CountryId
    • имя
  • города
    • CityId
    • имя
    • CountryId

Это индекс:

<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>

Как заполнить второй выбор?

  • 0
    Вы можете сделать это с помощью AJAX.
  • 0
    Обратите внимание, что теги не являются ключевыми словами. Заполнение списка тегов полными одних и тех же слов в вашем вопросе (html, dynamic, dropdown) не поможет классифицировать его. Всегда обязательно читайте описания, которые появляются при выборе тегов!
Теги:
html-select

2 ответа

0

Поместите какое-то имя в свой первый выбор, давайте назовите его здесь как 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>";
}
-2

Вам нужно будет использовать некоторую условную логику, назначить переменную для выбора, который они делают для своей страны, т.е. "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.

  • 0
    как это может работать как зависимые выпадающие списки?
  • 0
    Поскольку второй раскрывающийся список заполнен запросом WHERE, он заполняется только тем, что представляет собой первый раскрывающийся список.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню