Я хочу разделить данные по отделам

У меня есть PHP-запрос, который вводит данные, имя и отдел в таблицу.

Как я могу разделить каждый отдел на свою собственную таблицу?

$employee_qry=$conn->query("SELECT * FROM `employee` ") or die(mysqli_error());

while($row=$employee_qry->fetch_array()){           
<tr>
<td><?php echo $row['idnumber']?></td>                      
<td><?php echo $row['EmpleName']?></td>
<td><?php echo $row['Nationality']?></td>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Учитывая базовую схему таблицы и фиктивные данные следующим образом:

mysql> describe employee;
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| idnumber    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| emplename   | varchar(64)      | NO   |     | 0       |                |
| city        | varchar(64)      | NO   |     | 0       |                |
| postcode    | varchar(64)      | NO   |     | 0       |                |
| job_title   | varchar(64)      | NO   |     | 0       |                |
| nationality | varchar(64)      | NO   |     | 0       |                |
| department  | varchar(64)      | NO   |     | 0       |                |
+-------------+------------------+------+-----+---------+----------------+


mysql> select * from employee order by department;
+----------+-------------+-----------+----------+---------------+-------------+------------------+
| idnumber | emplename   | city      | postcode | job_title     | nationality | department       |
+----------+-------------+-----------+----------+---------------+-------------+------------------+
|        3 | Rusty Nail  | Glasgow   | G12 9TY  | Visual Artist | French      | Baguette Bashing |
|        4 | Dusty Bin   | Glasgow   | G12 8LL  | Student       | Spanish     | Exploring        |
|        6 | Dora        | Glasgow   | G12 8EX  | Explorer      | Spanish     | Exploring        |
|        1 | Bogus Mcgee | Glasgow   | G12 9TY  | Worm Charmer  | British     | Infernal Affairs |
|        2 | Flynn Boyle | Edinburgh | EH7 1AH  | Trout Tickler | British     | Infernal Affairs |
|        5 | Pickle Lily | Glasgow   | G3 6HN   | Life Model    | German      | Infernal Affairs |
+----------+-------------+-----------+----------+---------------+-------------+------------------+

Затем задача отображения сотрудников в отдельных таблицах в зависимости от отдела, в котором они работают, проста, если вы создаете массив для хранения имен отделов. Используя in_array в качестве теста, вы можете определить, требуется ли помещать текущую запись в цикле while в новую таблицу, если вы sort таблицу в SQL-запросе по отделам.

$sql='select * from `employee` order by `department`';
$res=$conn->query( $sql );
if ( $res ){

    $depts=array();
    $index=0;
    
    while( $rs=$res->fetch_object() ){
        # new department, create new table
        if ( !in_array( $rs->department, $depts ) ){
            #save department name
            $depts[]=$rs->department;

            # close previous table
            if ( $index > 0 ) echo '
                </table>';

            # begin new table
            printf(
                '
                <table border=1 cellpadding = "5px" cellspacing = "5px" style = "border-collapse:none; margin:2rem 0; width:50%%;background:silver">
                    <colgroup>
                        <col width = "5%%" />
                        <col width = "65%%" />
                        <col width = "30%%" />
                    </colgroup>
                    <caption>Department: %s</caption>
                    <tr style = "background:azure">
                        <td>%s</td>
                        <td>%s</td>
                        <td>%s</td>
                    </tr>',
                    $rs->department,
                    $rs->idnumber,
                    $rs->emplename,
                    $rs->nationality
            );
            
            $index++;
            
        }else{
            # continue existing table/department.
            printf(
                '
                    <tr style = "background:azure">
                        <td>%s</td>
                        <td>%s</td>
                        <td>%s</td>
                    </tr>',
                $rs->idnumber,
                $rs->emplename,
                $rs->nationality
            );
        }
    }
}

Затем приведенное выше дает результат (для ясности добавлены встроенные стили) - просмотрите фрагмент для отображаемого HTML

<table border=1 cellpadding = "5px" cellspacing = "5px" style = "border-collapse:none; margin:2rem 0; width:50%;background:silver">
  <colgroup>
    <col width = "5%" />
    <col width = "65%" />
    <col width = "30%" />
  </colgroup>
  <caption>Department: Baguette Bashing</caption>
  <tr style = "background:azure">
    <td>3</td>
    <td>Rusty Nail</td>
    <td>French</td>
  </tr>
</table>
<table border=1 cellpadding = "5px" cellspacing = "5px" style = "border-collapse:none; margin:2rem 0; width:50%;background:silver">
  <colgroup>
    <col width = "5%" />
    <col width = "65%" />
    <col width = "30%" />
  </colgroup>
  <caption>Department: Exploring</caption>
  <tr style = "background:azure">
    <td>4</td>
    <td>Dusty Bin</td>
    <td>Spanish</td>
  </tr>
  <tr style = "background:azure">
    <td>6</td>
    <td>Dora</td>
    <td>Spanish</td>
  </tr>
</table>
<table border=1 cellpadding = "5px" cellspacing = "5px" style = "border-collapse:none; margin:2rem 0; width:50%;background:silver">
  <colgroup>
    <col width = "5%" />
    <col width = "65%" />
    <col width = "30%" />
  </colgroup>
  <caption>Department: Infernal Affairs</caption>
  <tr style = "background:azure">
    <td>1</td>
    <td>Bogus Mcgee</td>
    <td>British</td>
  </tr>
  <tr style = "background:azure">
    <td>2</td>
    <td>Flynn Boyle</td>
    <td>British</td>
  </tr>
  <tr style = "background:azure">
    <td>5</td>
    <td>Pickle Lily</td>
    <td>German</td>
  </tr>

Другие вопросы по теме

Найти значения связи в SQL Server
T-SQL в SQL Server 2008 и более поздних версиях: стандартная функция для экранирования строковой переменной, которая входит в подобное сравнение
Запрос T-SQL, который выбирает только те записи, в которых объект имеет наивысший приоритет по сравнению с другими объектами
Sql-запрос, который будет показывать пересечение одних и тех же элементов каждый день
Выберите Числа, которые начинаются с цифры и нулей после
MS SQL Server и XML со специальными символами, такими как É, Ó, ¿ º и °
ROW_NUMBER ИЛИ ДРУГАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ В ЗАВИСИМОСТИ ОТ ДАТЫ (SQL)
SQL-запрос для возврата одного значения, соответствующего точным значениям в другом столбце той же таблицы
Индекс используется с SELECT COUNT(1), но не с SELECT *
Как вставить данные в таблицу, у которых есть первичный и внешний ключ как в одной таблице, но внешний ключ ссылается на другую таблицу?