<?php // Подключение к базе данных
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "administration_bd";
// Создание подключения
$conn = new mysqli($servername, $username, $password, $dbname);
// Проверка подключения if ($conn->connect_error) { die("Ошибка подключения: " . $conn->connect_error); }
// Запрос на получение всех отделов из базы данных $sqlDepartments = "SELECT * FROM departments"; $resultDepartments = $conn->query($sqlDepartments);
// Инициализация массива для хранения всех отделов
$allDepartments = array();
// Если есть результаты запроса, добавляем их в массив
if ($resultDepartments->num_rows > 0)
{ while ($row = $resultDepartments->fetch_assoc()) { $allDepartments[] = $row; } }
// Запрос на получение всех услуг из базы данных
$sqlServices = "SELECT * FROM services";
$resultServices = $conn->query($sqlServices);
// Инициализация массива для хранения всех услуг
$allServices = array();
// Если есть результаты запроса, добавляем их в массив
if ($resultServices->num_rows > 0) { while ($row = $resultServices->fetch_assoc()) { $allServices[] = $row; } }
// Закрытие соединения с базой данных
$conn->close(); ?>
//форма и скрипт
<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> <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> //файл обработчик 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, говорит проблем в коде нет)))
Вот как это должно было выглядеть
enter image description here
также у меня есть код обработчик 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);
?>
New contributor
unicorn is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.