将 PHP mysql 数据分类显示
Displaying PHP mysql data into categories
我正在尝试按类别显示从 mysql 到 table 的数据。
例如,
技能1
-职员 1
-职员 2
技能2
-职员 1
-职员 3
我成功地显示了数据库中的所有数据,但是,对于同一技能它显示了多个 table,我无法更正它。
编辑: 感谢您的回复,我已将 table 代码移出 while 循环。但是,现在它只显示一个包含不同技能的 table 及其人员数据聚集在一起。我希望他们按技能分类,谢谢!
这是我的代码:
$result = mysql_query("SELECT * FROM Acc_skills INNER JOIN Accounts ON Accounts.Role_ID = Acc_skills.FK_Role_ID INNER JOIN Skills ON Skills.Skills_id = Acc_skills.FK_Skills_ID ORDER BY Skills.Skills");
while ($row =mysql_fetch_array($result)){
echo' <b><font color="blue">'.$row['Skills'].'   (Skill ID: '.$row['Skills_id'].')</font></b>';
echo'
<style>table, th, td {border: 1px solid black;}</style>
<div class="table-responsive">
<table width="60%">
<thead>
<tr>
<th width = "20%" >Engineer assign ID</th>
<th style="text-align:center" width = "40%">Engineer</th>
<th style="text-align:center" = "40%">Skill Level</th>
<th> </th>
</tr>
</thead>';
echo '<tbody>
<tr>
<th scope="row" style="text-align:center">'.$row['Acc_skills_id'].'</th>
<td align="center">'.$row['name'].'  ('.$row['FK_Role_ID'].')</td>
<td align="center">'.$row['Level'].'</td>
</td>
</tr>
</tbody>';
echo '</table><br><br>';
echo '</div>';
提前致谢
您必须检查 Skill_id 是否与上次处理的行相比发生了变化。如果出现新的 Skill_id,则结束当前 table 并开始新的
<?php
function tableHeader()
{
echo '<div class="table-responsive">';
echo '<table width="60%">';
echo '<thead>';
echo '<tr>';
echo '<th width = "20%" >Engineer assign ID</th>';
echo '<th style="text-align:center" width = "40%">Engineer</th>';
echo '<th style="text-align:center" = "40%">Skill Level</th>';
echo '<th> </th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
}
function tableFooter()
{
echo '</tbody>';
echo '</table>';
echo '</div>';
}
tableHeader();
$prevSkillId = null;
while ($row =mysql_fetch_array($result)){
if($row['Skill_id'] != $prevSkillId){
tableFooter();
tableHeader();
}
echo '<tr>';
echo '<td>'.$row[...].'</td>';
......
echo '</tr>';
$prevSkillId = $row['Skill_id'];
}
tableFooter();
我正在尝试按类别显示从 mysql 到 table 的数据。
例如,
技能1
-职员 1
-职员 2
技能2
-职员 1
-职员 3
我成功地显示了数据库中的所有数据,但是,对于同一技能它显示了多个 table,我无法更正它。
编辑: 感谢您的回复,我已将 table 代码移出 while 循环。但是,现在它只显示一个包含不同技能的 table 及其人员数据聚集在一起。我希望他们按技能分类,谢谢!
这是我的代码:
$result = mysql_query("SELECT * FROM Acc_skills INNER JOIN Accounts ON Accounts.Role_ID = Acc_skills.FK_Role_ID INNER JOIN Skills ON Skills.Skills_id = Acc_skills.FK_Skills_ID ORDER BY Skills.Skills");
while ($row =mysql_fetch_array($result)){
echo' <b><font color="blue">'.$row['Skills'].'   (Skill ID: '.$row['Skills_id'].')</font></b>';
echo'
<style>table, th, td {border: 1px solid black;}</style>
<div class="table-responsive">
<table width="60%">
<thead>
<tr>
<th width = "20%" >Engineer assign ID</th>
<th style="text-align:center" width = "40%">Engineer</th>
<th style="text-align:center" = "40%">Skill Level</th>
<th> </th>
</tr>
</thead>';
echo '<tbody>
<tr>
<th scope="row" style="text-align:center">'.$row['Acc_skills_id'].'</th>
<td align="center">'.$row['name'].'  ('.$row['FK_Role_ID'].')</td>
<td align="center">'.$row['Level'].'</td>
</td>
</tr>
</tbody>';
echo '</table><br><br>';
echo '</div>';
提前致谢
您必须检查 Skill_id 是否与上次处理的行相比发生了变化。如果出现新的 Skill_id,则结束当前 table 并开始新的
<?php
function tableHeader()
{
echo '<div class="table-responsive">';
echo '<table width="60%">';
echo '<thead>';
echo '<tr>';
echo '<th width = "20%" >Engineer assign ID</th>';
echo '<th style="text-align:center" width = "40%">Engineer</th>';
echo '<th style="text-align:center" = "40%">Skill Level</th>';
echo '<th> </th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
}
function tableFooter()
{
echo '</tbody>';
echo '</table>';
echo '</div>';
}
tableHeader();
$prevSkillId = null;
while ($row =mysql_fetch_array($result)){
if($row['Skill_id'] != $prevSkillId){
tableFooter();
tableHeader();
}
echo '<tr>';
echo '<td>'.$row[...].'</td>';
......
echo '</tr>';
$prevSkillId = $row['Skill_id'];
}
tableFooter();