存储在MySQL中并在HTML表格中显示可变数量的行

时间:2017-03-03 14:10:02

标签: php html mysql

我会尝试尽可能地解释问题,我会在问题上加上数字来更好地展示它,但这可能不是真的:

我有一个小系统,最多2名教师对执行任务的学生进行评分。学生必须完成10项任务,因此学生总共最多可以评选20名教师。

每个任务都有一些相同的问题但不是全部,例如在Task1中,教师会看到10个评分点,例如" 1。对患者来说很重要:"然后是5个单选按钮,用于对学生进行评分。 (最低,E最高)。

但是在Task2中可能没有患者,因此无法评分。所以我们跳过问题1,也许是2,从3开始。所以这些问题不会显示给老师。因此,我们最终得到每个任务的可变数量的评分,有些可能有5个等等。

我有一个包含学生信息的表格,另一个包含教师信息,任务信息(包括要在所述任务中提出的问题),最后一个包含评估:

+------------+------------+---------+---------------+-----+
| id_student | id_teacher | id_task | grades        | ... |
+------------+------------+---------+---------------+-----+
| 1          | 2          | 4       | E,C,D,B,C,D,E |     |
| 1          | 25         | 5       | A,E,B,C       |     |
| 1          | 8          | 6       | E,D,C,C,D,D   |     |
+------------+------------+---------+---------------+-----+

首先我将存储用逗号分隔的成绩确定,然后使用php explode检索它,它适用于每个任务的每个用户存储和显示信息,但是,首先我不知道如果这是一个好习惯,那么我现在可以将所有学生的成绩显示在HTML表格中,但是我如何获得最高成绩来决定表格字段的数量然后如何我能告诉哪些成绩在哪里,所以我得到了:

+---------+---------+------+---------+------------+---------+-----+
| Student | Teacher | Task | Grade 1 | Grade 2    | Grade 3 | ... |
+---------+---------+------+---------+------------+---------+-----+
| 1       | 2       | 4    | E       | C          | D       | ... |
| 1       | 25      | 5    | NULL    | NULL       | A       | ... |
| 1       | 8       | 6    | E       | D          | NULL    | ... |
+---------+---------+------+---------+------------+---------+-----+

所以最后问题是,是否有更好的方法来解决这个问题?如在另一个表中存储成绩但是如何分析列的数量,最后如何以更好的方式在HTML中显示它?

1 个答案:

答案 0 :(得分:0)

规范化环境可能如下所示。请注意,这里存在一定程度的冗余。可以通过将数据分成适当的单独表来解决冗余问题。

+---------+---------+------+----------+-------+
| Student | Teacher | Task | Grade_no | Grade |
+---------+---------+------+----------+-------+
|       1 |      2  |   4  |       1  | E     |
|       1 |      2  |   4  |       2  | C     |
|       1 |      2  |   4  |       3  | D     |
|       1 |     25  |   5  |       3  | A     |
|       1 |      8  |   6  |       1  | E     |
|       1 |      8  |   6  |       2  | D     |
+---------+---------+------+----------+-------+