php - 如何根据表头将多条记录显示为表头和final

标签 php html mysql

我对我想问的标题感到困惑。我正在研究这个,当我想看到学生报告每个主题的值(value)时。

下面是我在数据库中的主题表。

+-----------+----------------------+----------------------+
| SubjectID |      SubjectName     |       ThemeName      |
+-----------+----------------------+----------------------+
|     1     |       Subject1       |        Myself        |
|     2     |       Subject1       |       My Hobbies     |
|     3     |       Subject1       |      My Activity     |
|     4     |       Subject1       |       My Family      |
|     5     |       Subject2       |     My Experience    |
|     6     |       Subject2       |      Environment     |
|     7     |       Subject2       |        Things        |
|     8     |       Subject2       |     Nature Incident  |
+-----------+----------------------+----------------------+

这是每个主题的表值。

+-----------+-----------+-----------+------------+
|  ValueID  | StudentID | SubjectID | FinalScore |
+-----------+-----------+-----------+------------+
|     1     |    112    |     1     |     80     |
|     2     |    112    |     2     |     90     |
|     3     |    112    |     3     |     50     |
|     4     |    112    |     4     |     70     |
|     5     |    113    |     1     |     60     |
|     6     |    113    |     2     |     40     |
|     7     |    113    |     3     |     50     |
|     8     |    113    |     4     |     90     |
+-----------+-----------+-----------+------------+

我想像下表一样显示在我的 html 上

+----+-----------+------------+------------+------------+------------+
| No | StudentID | ThemeName1 | ThemeName2 | ThemeName3 | ThemeName3 |
+----+-----------+------------+------------+------------+------------+
| 1  |    112    |     80     |     90     |     50     |     70     |
| 2  |    113    |     60     |     40     |     50     |     90     |
+----+-----------+------------+------------+------------+------------+

我现在正在工作的这张 table 。忽略一个空的,我会尽快删除它。

<table cellspacing="0" border="0" class="table display table-bordered" id="table1">
                <thead>
                    <tr>
                        <th width="1%"><center>No</th>
                        <th width="10%"><center>Nama Siswa</th>
                        <th width="12%"><center>Nama Mapel</th>
                        <th width="25%"><center>Diri Sendiri</th>
                        <th width="5%"><center>Kegemaranku</th>
                        <th width="5%"><center>Kegiatanku</th>
                        <th width="5%"><center>Keluargaku</th>
                        <th width="5%"><center>TG4</th>
                        <th width="1%"><center>Aksi</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
                        $no = 1;
                        $query = mysql_query("SELECT NISN, MAX(CASE WHEN KodeMapel = 29 THEN NilaiAkhir END) AS Diri Sendiri, MAX(CASE WHEN KodeMapel = 30 THEN NilaiAkhir END) AS Kegemaranku, MAX(CASE WHEN KodeMapel = 31 THEN NilaiAkhir END) AS Kegiatanku, MAX(CASE WHEN KodeMapel = 32 THEN NilaiAkhir END) AS Keluargaku FROM pengetahuan
                        GROUP BY NISN");
                        while ($pengetahuan = mysql_fetch_array($query)) 
                        {
                            $kode       = $pengetahuan['KodeP'];
                            $nisn       = $pengetahuan['NISN'];
                            $namasiswa  = $pengetahuan['NamaSiswa'];
                            $namatema   = $pengetahuan['NamaTema'];
                            $namamapel  = $pengetahuan['NamaMapel'];
                            $na         = $pengetahuan['NilaiAkhir'];
                    ?>  
                        <tr>
                            <td>
                                <center>
                                    <?php echo $no++; ?>
                                </center>
                            </td>
                            <td>
                                <center><?php echo $namasiswa; ?>
                            </td>
                            <td>
                                <center><?php echo $namamapel; ?>
                            </td>
                            <td>
                                <?php echo $na; ?>
                            </td>
                            <td>
                            <center>

                            </td>
                            <td>
                            <center>

                            </td>
                            <td>
                            <center>
                                <?php 

                                ?>
                            </td>
                            <td>
                            <center>
                                <?php 

                                ?>
                            </td>
                            <td>
                            <center>
                                <?php 

                                ?>
                            </td>
                            <td>
                            <center>
                                <?php

                                ?>
                            </td>
                            <td>
                            <center>
                                <?php

                                ?>
                            </td>
                            <td>
                                <center>
                                    <button data-id="<?php echo "$kode"; ?>" type="button" class="btn btn-info btn-sm" data-toggle="modal" data-target="#myModal12"><i class="fa fa-pencil fa-fw"></i> Tambah Nilai</button>
                                    <a href="Pengetahuan/Tema4/action.php?KodeP= <?php echo $$kode; ?>" class="btn btn-danger btn-sm" id="submit" type="submit"/>
                                    <i class="fa fa-trash fa-fw"></i> Hapus </a>
                                </center>   
                            </td>       
                        </tr>
                    <?php                               
                        }
                    ?>
                </tbody>
            </table>

可以吗? 谢谢

最佳答案

您可以使用以下数据透视查询来获取输出中所需的总表:

SELECT
    StudentID,
    MAX(CASE WHEN SubjectID = 1 THEN FinalScore END) AS ThemeName1,
    MAX(CASE WHEN SubjectID = 2 THEN FinalScore END) AS ThemeName2,
    MAX(CASE WHEN SubjectID = 3 THEN FinalScore END) AS ThemeName3,
    MAX(CASE WHEN SubjectID = 4 THEN FinalScore END) AS ThemeName4
FROM yourTable
GROUP BY StudentID

要生成 No 列,您可以在遍历结果集时在 PHP 代码中处理它。

关于php - 如何根据表头将多条记录显示为表头和final,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44172266/

相关文章:

html - IE6 : How to get inline base64 images to work with IE6?

java - 无法理解我的 Spring DTO 的工作原理

php - 将多个值插入数据库的最佳方法 - PHP MySQL

javascript - 谷歌地图 : How to redirect to other points in the map?

php - 使用 PHP 在多个页面上存储数据

php - 尝试在构造函数中调用方法时出现 fatal error

python - 在通过 python 使用 LIKE 和 % 通配符执行的 mySQL 查询中转义 '%'

php - 有没有办法阻止访客查看该帖子?

php - 路由中的 Laravel 5.5 模型绑定(bind)不起作用

php - 如何在插入数据前检查错误