Задать вопрос
  • Как мне выводить из базы данных информацию по группам?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я только недавно начал изучать программирование

    Это очень похвально. Только ради бога, учите его по нормальным учебникам, а не по видеокурсам, которые делали неграмотные дети на мамкином ноутбуке.
    Примеры говнокода

    • unction selectAll1 - это глупость и говнокод. У функции должно быть осмысленное имя
    • ($table1 , $table2 , $table3 , $table4 , $table5){ - это глупость и говнокод. Учитывая, что функция в любом случае уникальная для используемых таблиц, передавать их в качестве параметров имеет 0 смысла.
    • global $pdo; - это глупость и говнокод. Потом сами не будете знать, что откуда взялось. Все параметры надо передавать в функцию явно.
    • dbCheckError($query); - это глупость и говнокод. Специально проверять запрос на ошибки не нужно. Надо написать один общий обработчик ошибок для всего сайта и любых ошибок.
    • <?=$contacts['filial']?> - это говнокод и дыра в безопасности. В любых данных, выводимых в HTML, должны экранироваться спецсимволы HTML


    Поскольку вы используете 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 ?>
    Ответ написан
    Комментировать