php - 将 PHP mysql 数据分类显示

标签 php mysql join categories

我正在尝试按类别将来自 mysql 的数据显示到表中。

例如,

技能1
-员工1
-员工2

技能2
-员工1
-员工3

我设法显示数据库中的所有数据,但是,它显示同一技能的多个表,我无法更正它。

编辑:感谢您的回复,我已将表代码移出 while 循环。然而,现在它只显示一个包含不同技能的表及其聚集在一起的员工数据。我希望能按技能分类,谢谢!

这是我的代码:

 $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'].' &nbsp (Skill ID:&nbsp'.$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'].' &nbsp('.$row['FK_Role_ID'].')</td>
        <td align="center">'.$row['Level'].'</td>
        </td>


    </tr>


    </tbody>';


echo '</table><br><br>';    
echo '</div>';

提前致谢

最佳答案

您必须检查 Skill_id 与上次处理的行相比是否已更改。如果出现新的 Skill_id,则结束当前表并开始新的表。

<?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();

关于php - 将 PHP mysql 数据分类显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34978930/

相关文章:

php - 如何计算内连接上两个表之间重复值的总数

php - 我们能否确定请求是否是从另一个域发送的?

mysql - 如何在SQL Server中模拟MySQL的时间戳数据类型

mysql - 如何使用多个 View 创建临时表

C#/LINQ(?) - 加入两个数据表(没有 SQL!)

json - 合并 JSON 文件但保留空键(最好使用 JQ)

php - 寻找一些不错的选择来向用户发送重置密码电子邮件

php - 保存产品自定义字段并将其显示在购物车页面中

php - 如何标准化我的 MySQL 数据库

sql - 如何在 MySQL 中执行 FULL OUTER JOIN?