Получите выбранный вариант из выпадающего списка

Вопрос или проблема

Я создал раскрывающийся список, используя данные из базы данных для заполнения опций. Это работает хорошо. Теперь я хочу получить выбранное значение, чтобы выбрать все записи с этим значением из базы данных. Я искал и пробовал множество предложений, которые нашел, но до сих пор ничего не сработало. Если возможно, я хочу сделать это на PHP (значение должно быть в $ для создания запроса к базе данных).

Вот код, который выводит часть с выбором:

<div class="search-bar-container">
    <div class="drop-down-course">
        <select class="course" name="course">
            <option disabled selected value="0"> - выберите - </option>
            <?php
            // Получаем все опции из базы данных для выпадающего списка 'course'.
            $my_course = $wpdb -> get_results( "SELECT term_id, name FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE taxonomy = 'wprm_course') " )  ; 
                if (!empty ($my_course ) ) {
                    foreach ( $my_course as $my_course ) {
                        echo '<option value ="' . $my_course -> term_id . '">' . $my_course -> name . '</option>';
                    }
                }
            ?>
        </select>
    </div>
</div>

Я читал о использовании функции selected(), но не могу заставить это работать. Если я правильно понимаю, мне нужна условная selected="selected" в части <option>. Если кто-то может помочь мне с этим, я буду признателен.

Редактировать: Мне удалось получить значение с помощью jquery (я хочу решение без кнопки отправки). Код:

    $(document).ready(function(){
    $("#course").change(function(){
     var selectedcourse = $('#course').val(); 
    });
    });

Теперь мне нужно получить значение в php на новой странице. Я пытаюсь заставить это работать.

Редактировать2:
Я тоже довёл последнюю часть до ума. Строка кода, которая идет после var selectedcourse = $('#course').val();, это:

window.location.href="http://" + window.location.hostname + '/wordpress/zoekresultaten?course=" + selectedcourse;

В wp admin я создал страницу под названием zoekresultaten и в атрибутах страницы назначил шаблон для этой страницы, чтобы обработать выбранный вариант. Я использовал простую команду echo в этом шаблоне, и он показывает значение выбранного варианта с предыдущей страницы. Теперь я могу продолжить обрабатывать выбор.

Я искал и пробовал множество предложений, которые нашел, но до сих пор ничего не сработало. Если возможно, я хочу сделать это на PHP (значение должно быть в $ для создания запроса к базе данных).

Выпадающий список выбора курса должен быть заключен в тег <form> с кнопкой submit, вот так:

    <?php 
       $course="";
       if(isset($_POST['course'])) $course = $_POST['course'];

          <div class="search-bar-container">

             <form method="POST">

               <div class="drop-down-course">
                  <select class="course" name="course">
                     <option disabled selected value="0"> - выберите - </option>
                     <?php
                       // Получаем все опции из базы данных для выпадающего списка 'course'.
                       $my_course = $wpdb -> get_results( "SELECT term_id, name FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE taxonomy = 'wprm_course') " )  ; 
                       if (!empty ($my_course ) ) {
                           foreach ( $my_course as $my_course ) {
                               echo '<option value ="' . $my_course -> term_id . '" ' . selected($my_course -> term_id , $course).'>' . $my_course -> name . '</option>';
                            }
                       }
                ?>
                   </select>
             </div>

             <input type="submit" value="Перейти">
          </form>

       </div>


    <?php

          // Получаем записи, используя $course в качестве выбранного варианта здесь
    ?>

Ответ или решение

Как получить выбранное значение из выпадающего списка на PHP

Когда вы создаете интерфейс с выпадающим списком (drop-down list) на основании данных из базы данных, важно правильно организовать взаимодействие между фронтендом и бэкендом. В данном случае мы рассмотрим, как извлечь значение, выбранное пользователем в выпадающем списке, и использовать его для формирования запроса к базе данных.

Шаг 1: Создание формы с выпадающим списком

Вам необходимо обернуть ваши элементы в тег <form> для отправки данных на сервер. Вот основной код с пояснениями:

<?php 
$course = "";
if (isset($_POST['course'])) $course = $_POST['course'];
?>

<div class="search-bar-container">
    <form method="POST" action="">
        <div class="drop-down-course">
            <select class="course" name="course">
                <option disabled selected value="0"> - выберите курс - </option>
                <?php
                // Получаем все курсы из базы данных.
                $my_course = $wpdb->get_results("SELECT term_id, name FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE taxonomy = 'wprm_course')");
                if (!empty($my_course)) {
                    foreach ($my_course as $my_course) {
                        // Генерация опций выпадающего списка
                        echo '<option value="' . $my_course->term_id . '" ' . selected($my_course->term_id, $course, false) . '>' . $my_course->name . '</option>';
                    }
                }
                ?>
            </select>
        </div>
        <input type="submit" value="Искать">
    </form>
</div>

<?php
// Здесь вы можете использовать значение $course для формирования запроса к базе данных
if ($course) {
    // Пример запроса к базе данных с использованием значения курса
    $posts = $wpdb->get_results($wpdb->prepare("SELECT * FROM wp_posts WHERE course_id = %d", $course));
    // Обработка и вывод постов
}
?>

Шаг 2: Разобрать код

  1. Форма и обработка данных: Фигура с method="POST" отправляет данные на сервер. Если пользователь выбирает курс и отправляет форму, значение будет доступно в массиве $_POST.

  2. Выпадающий список: Для каждого курса генерируется элемент <option>. Функция selected() автоматически добавит атрибут selected к выбранному элементу, что улучшает пользовательский опыт, показывая, какой курс был выбран.

  3. Запрос к базе данных: После отправки формы проверяется, было ли значение курса выбрано, и если да, выполняется SQL-запрос с использованием wpdb для получения соответствующих постов.

Заключение

Таким образом, вы можете успешно извлекать выбранное значение из выпадающего списка и использовать его для взаимодействия с базой данных на PHP. Этот подход позволяет создать более динамичное и интерактивное приложение, обеспечивая при этом простоту работы для конечного пользователя. Не забывайте, что правильная обработка данных и безопасность при работе с пользовательским вводом являются важными аспектами разработки — убедитесь, что используете функции, такие как prepare(), для защиты ваших запросов от SQL-инъекций.

Оцените материал
Добавить комментарий

Капча загружается...