У меня есть 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>






Учитывая базовую схему таблицы и фиктивные данные следующим образом:
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>