PHP — Создание зависимых выпадающих списков

Итак, у меня есть два выпадающих списка, которые заполнены данными из двух отдельных таблиц mysql, связанных с внешним ключом, мне было интересно, могу ли я сделать их зависимыми, используя только php (без использования ajax, jscript и т. д.), кроме как с помощью куча операторов if во второй таблице?

пока у меня есть:

   Movies:
   <select name = "Movie">
   <option value = "Pick a Movie">Pick a movie</option>
   <?php foreach($movies->fetchAll() as $movie):?>
   <option value = "<?php echo $movie['id'];?>"> <?php echo 
  $movie['movietitle'];?> </option>
   <?php endforeach; ?>
 </select>

   Screening Time:
   <select name = "times">
   <option value = "Please select a Screening time">Please select a 
   screening time</option>
   <?php foreach($screenings->fetchAll() as $screening):?>
   <option value = "<?php echo $screening['id'];?>"> <?php echo 
   $screening['time'];?> </option>
   <?php endforeach; ?>
 </select> 

Я надеюсь, что когда пользователь выбирает фильм из первого раскрывающегося меню, отображается только время показа этого конкретного фильма, а не все время показа, хранящееся в базе данных.

Я предполагаю, что мне нужен внешний ключ для соединения двух таблиц, поэтому теперь у меня есть две таблицы, которые:

столик для кино

|---------------------|------------------|
|           id        |    movietitle    |           
|---------------------|------------------|
|           1         |  pulp fiction    |           
|---------------------|------------------|
|           2         |    armageddon    |           
|---------------------|------------------|
|          3          |     Titanic      |           
|---------------------|------------------|

Таблица скрининга

|---------------------|---------------------|-------------|
|           id        |  screening time     | courseid(fk)|
|---------------------|---------------------|-------------|
|           1         |     sun 11          |       3     |
|---------------------|---------------------|-------------|
|           2         |      sat 8          |       1     |
|---------------------|---------------------|-------------|
|          3          |       fri 9         |       2     |
|---------------------|---------------------|-------------|

так могу ли я настроить свой код, чтобы включить курс в качестве внешнего ключа, чтобы сделать их зависимыми? если нет, есть ли другой способ заставить пользователя выбирать только определенные группы данных в обоих меню, т.е. «титаник» «пятница 9», но не «титаник» «воскресенье 11» или «титаник» «сб 8»?

Это невозможно (ну, это не будет удобно для пользователя) только с php и html, почему вы не хотите использовать js?

Lawrence Cherone 23.03.2019 03:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
204
1

Ответы 1

Для создания надежного раскрывающегося списка вам необходимо сделать раскрывающийся список, и каждый раскрывающийся список будет иметь отдельный я бы. Используя событие изменения, вы можете постоянно обращаться к серверу. Затем сервер ответит на запрос. После этого вы обработаете запрос и вернете выпадающее меню. Вы можете сделать это внутри цикла while. Вы можете увидеть полный код на веб-сайт github в качестве ссылки

Следуйте приведенному ниже коду и обработайте

index.php

    <?php
if (file_exists('function.php')) {
    include_once 'function.php';
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset = "UTF-8">
        <title>Dependable Dropdown Menu</title>
        <style>
            body{
                margin:0px auto;
                padding: 0px;
                max-width: 600px;
            }
            .main{

                margin: 50px auto;
                text-align: center;
            }
            #country,#city{
                width: 500px;
                height: 50px;
                font-size: 18px;
                margin: 0 auto;
            }
            select{
                width: 600px;
            }
        </style>

    </head>
    <body>
        <div class = "main">
             <h1>Dependable Dropdown Menu</h1>
            <div class = "dropdownmenu">
                <select name = "" id = "country" class = "form-control">
                    <option value = "">Select</option>
                    <?php
                    $con = connection();
                    $stmt = $con->query("select * from country order by name");
                    if ($stmt) {
                        ?>
                        <?php while ($r = $stmt->fetch_assoc()): ?>
                            <option value = "<?php echo $r['id']; ?>"><?php echo $r['name']; ?></option>
                        <?php endwhile; ?>
                    <?php } ?>
                </select>
                <br/>
                <br/>
                <select name = "" id = "city" class = "form-control">
                    <option value = "">Select</option>

                </select>
            </div>
        </div>

        <script src = "assets/js/jquery.min.js"></script>   
        <script>
            $('#country').on('change', function () { //dropdown changing event
                var countryID = $(this).val(); //getting specific country id from database
                console.info(countryID);
                if (countryID !== '') {
                    $.ajax({
                        url: "fetch.php", //requesting to fetch.php for getting cities list as response
                        data: {// we are passing two values by get in the url
                            action: 'getcities',
                            countryid: countryID
                        },
                        method: 'get',
                        success: function (data) { //getting response from server
                            $('#city').html(data); //putting response to second dropdown
                            console.info(data);
                        }, error: function (e) { //this will show error if exist any
                            console.info(e); //for looking error message press ctrl+shift+i
                        }
                    });
                } else {
                    $('#city').html("<option>Select</option>");
                }
            });
        </script>

    </body>
</html>

fetch.php

    <?php
if (file_exists('function.php')) {
    include_once 'function.php';
}
$con = connection();
if (isset($_GET['action']) && $_GET['action'] == 'getcities') {
    $countryid = mysqli_real_escape_string($con, $_GET['countryid']);
    $q = "select * from city where country='$countryid' order by name asc";
    $stmt = $con->query($q);
    $val = "";
    if ($stmt) {
        if ($stmt->num_rows > 0) {
            while ($row = $stmt->fetch_assoc()) {
                $val .= "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
            }
        }
    } else {
        $val = "<option>Select</select>";
    }
    echo $val;
}

function.php

    <?php
//connection for project. this connection will be used in whole project
function connection() {
    $con = new mysqli('localhost', 'root', '', 'country_city');
    return $con;
}

Другие вопросы по теме