Как изменить запрос `selectAll1` написанный на языке PHP для избежания дублирования столбца `department` при выводе данных из базы данных с использованием цикла `foreach`? Вам доступны таблицы `filial_work`, `department_work`, `position`, `number_work` и `contact_work` в базе данных.
Для получения данных из базы данных, отсортированных по группам, вы можете использовать оператор SQL `ORDER BY`. Например, если вы хотите отсортировать данные по столбцу `department`, запрос может выглядеть так: ```sql SELECT * FROM your_table_name ORDER BY department; ``` Чтобы изменить запрос `selectAll1` на языке PHP для избежания дублирования столбца `department`, вы можете использовать цикл `foreach` и массив, который будет содержать уникальные значения `department`. Примерно так может выглядеть ваш обновленный код на PHP: ```php <?php // Ваш исходный запрос selectAll1 $query = "SELECT * FROM your_table_name"; // Выполняем запрос и получаем данные $result = mysqli_query($connection, $query); // Создаем массив для хранения уникальных значений department $departments = array(); // Обрабатываем результат запроса с помощью цикла foreach while($row = mysqli_fetch_assoc($result)) { // Проверяем, был ли уже такой department в массиве if (!in_array($row['department'], $departments)) { // Если нет, добавляем его в массив и выводим данные $departments[] = $row['department']; echo 'Department: ' . $row['department'] . '<br>'; // Выводите остальные данные, если необходимо echo 'Other columns: ' . $row['other_column'] . '<br>'; } } ?> ``` Этот код будет выводить данные из базы данных, отсортированные по `department`, и избегать дублирования значений этого столбца.
Я только недавно начал изучать программирование
Это очень похвально. Только ради бога, учите его по нормальным учебникам, а не по видеокурсам, которые делали неграмотные дети на мамкином ноутбуке.
Поскольку вы используете PDO, то можете сразу получить трехмерный массив, сгруппированный по одному полю
function listContactsByDepartment ($pdo){ $sql = "SELECT t3.department, -- обращаем внимание на эту строчку. Она должна быть первой t1.id, t1.full_name, t1.email_user, t1.tel_number, t2.filial, t3.department_email, t4.position, t5.number FROM contact_work AS t1 INNER JOIN filial_work AS t2 ON t1. id_filial = t2.id INNER JOIN department_work AS t3 ON t1. id_department = t3.id INNER JOIN position AS t4 ON t1. id_position = t4.id INNER JOIN number_work AS t5 ON t1. id_number = t5.id ORDER BY `t2`.`filial` ASC , `t3`.`department` DESC "; return $pdo->query($sql)->fetchAll(PDO::FETCH_GROUP); # Обращаем внимание на эту константу } $contacts = listContactsByDepartment ($pdo);
Из этой функции вы получите трехмерный массив, который выводится двумя вложенными циклами
<?php foreach($contacts as $department_title => $department_contacts): ?> <tr> <td colspan=10><?=htmlspecialchars($department_title) ?> <tr> <?php foreach($department_contacts as $row): ?> <tr> <td><?=htmlspecialchars($row['filial']) ?></td> ... </tr> <?php endforeach ?> <?php endforeach ?>