Вопрос или проблема
Я создал раскрывающийся список, используя данные из базы данных для заполнения опций. Это работает хорошо. Теперь я хочу получить выбранное значение, чтобы выбрать все записи с этим значением из базы данных. Я искал и пробовал множество предложений, которые нашел, но до сих пор ничего не сработало. Если возможно, я хочу сделать это на 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: Разобрать код
-
Форма и обработка данных: Фигура с
method="POST"
отправляет данные на сервер. Если пользователь выбирает курс и отправляет форму, значение будет доступно в массиве$_POST
. -
Выпадающий список: Для каждого курса генерируется элемент
<option>
. Функцияselected()
автоматически добавит атрибутselected
к выбранному элементу, что улучшает пользовательский опыт, показывая, какой курс был выбран. -
Запрос к базе данных: После отправки формы проверяется, было ли значение курса выбрано, и если да, выполняется SQL-запрос с использованием
wpdb
для получения соответствующих постов.
Заключение
Таким образом, вы можете успешно извлекать выбранное значение из выпадающего списка и использовать его для взаимодействия с базой данных на PHP. Этот подход позволяет создать более динамичное и интерактивное приложение, обеспечивая при этом простоту работы для конечного пользователя. Не забывайте, что правильная обработка данных и безопасность при работе с пользовательским вводом являются важными аспектами разработки — убедитесь, что используете функции, такие как prepare()
, для защиты ваших запросов от SQL-инъекций.