Необходимо из бд выводить данные об отделах и соответствующих услугах, но список с отделами не высвечивается,а услуги к выбору недоступны
Код получения отделов и услуг
<?php
// Подключение к базе данных
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "administration_bd";
// Создание подключения
$conn = new mysqli($servername, $username, $password, $dbname);
// Проверка подключения
if ($conn->connect_error) {
die("Ошибка подключения: " . $conn->connect_error);
}
// Запрос к базе данных для получения списка отделов
$sql_departments = "SELECT id, name_department FROM departments";
$result_departments = $conn->query($sql_departments);
// Проверка наличия результатов
if ($result_departments->num_rows > 0) {
// Вывод списка отделов
while ($row = $result_departments->fetch_assoc()) {
echo "<option value='" . $row['id'] . "'>" . $row['name_department'] . "</option>";
}
}
// Запрос на получение всех услуг из базы данных
$sqlServices = "SELECT * FROM services";
$resultServices = $conn->query($sqlServices);
// Инициализация массива для хранения всех услуг
$allServices = array();
// Если есть результаты запроса, добавляем их в массив
if ($resultServices->num_rows > 0) {
while ($row = $resultServices->fetch_assoc()) {
$allServices[] = $row;
}
}
// Закрытие соединения с базой данных
$conn->close();
?>
Форма и скрипт выполнения
<script>
document.getElementById("id_department").addEventListener("change", function() {
var departmentId = this.value.split(":")[0]; // Получаем только числовой идентификатор отдела
var serviceSelect = document.getElementById("id_services");
serviceSelect.innerHTML = "<option value='0'>- Выберите услугу -</option>";
if (departmentId != 0) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "get_services.php?id_department=" + departmentId, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var services = JSON.parse(xhr.responseText);
services.forEach(function(service) {
var option = document.createElement("option");
option.value = service.id_services;
option.text = service.name_services;
serviceSelect.appendChild(option);
});
serviceSelect.disabled = false;
}
};
xhr.send();
} else {
serviceSelect.disabled = true;
}
});
</script>
<section class="section-write">
<div class="form-box-write">
<div class="form-value-write">
<form action="get_info_write.php" method="post">
<h2>Запись на услугу</h2>
<input type="hidden" name="id_user" value="<?php echo $_SESSION['id_user']; ?>">
<div class="inputbox-write">
<h4>Дата/Время</h4>
<input type="date" id="date_time_write" name="date_time_write">
</div>
<div class="inputbox-write">
<label for="id_department">Отдел:</label>
<select id="id_department" name="id_department">
<option value="0">- Выберите отдел -</option>
<?php
if ($result_departments->num_rows > 0) {
while ($row = $result_departments->fetch_assoc()) {
echo "<option value='" . $row['id'] . "'>" . $row['id'] . ": " . $row['name_department'] . "</option>";
}
}
?>
</select>
</div>
<div class="inputbox-write">
<label for="id_services">Услуга:</label>
<select id="id_services" name="id_services" disabled>
<option value="0">- Выберите услугу -</option>
<?php foreach ($allServices as $service) : ?>
<option value="<?php echo $service['id_services']; ?>"><?php echo $service['name_services']; ?></option>
<?php endforeach; ?>
</select>
</div>
<button class="button_a" type="submit" name="tec_writes"><a href="write.php">Записаться</a></button>
</form>
</div>
</div>
</section>
Также есть код обработчика формы: get_services.php
<?php
// Подключение к базе данных
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "administration_bd";
// Создание подключения
$conn = new mysqli($servername, $username, $password, $dbname);
// Проверка подключения
if ($conn->connect_error) {
die("Ошибка подключения: " . $conn->connect_error);
}
// Получение id отдела из запроса
$id_department = $_GET['id_department'];
// Проверяем, что $id_department является числовым значением
if (!is_numeric($id_department)) {
die("Ошибка: Некорректный идентификатор отдела.");
}
// Преобразуем значение в целое число
$id_department = intval($id_department);
// Подготовленный запрос для извлечения услуг для выбранного отдела
$stmt = $conn->prepare("SELECT id_services, name_services FROM services WHERE id_department =
?");
$stmt->bind_param("i", $id_department);
$stmt->execute();
$result_services = $stmt->get_result();
// Создание массива для хранения данных об услугах
$services = array();
// Если есть результаты запроса, добавляем их в массив
if ($result_services->num_rows > 0) {
while ($row = $result_services->fetch_assoc()) {
$services[] = array(
'id_services' => $row['id_services'],
'name_services' => $row['name_services']
);
}
}
// Закрытие соединения с базой данных
$stmt->close();
$conn->close();
// Отправка данных в формате JSON
echo json_encode($services);
?>
Пробовала искать ошибки в консоле браузера и отладку кода делала на каждом этапе,помогите,пожалуйста уже неделю сижу с этой проблемой, даже пробовала писать чату gpt, говорит проблем в коде нет)))