1

次のように表されたデータを使用して、テーブルを作成しようとしています。

Skills   | Project #1 | Project #2 | Project #3
Skill #1    Grade         Grade        Grade
Skill #2    Grade         Grade        Grade

基本的に、Project で始まる列は動的であり、SQL クエリによって取得され、配列に格納されます。

スキルも動的で、配列に格納されます。そして、各スキルの成績は、それが含まれるプロジェクトで受け取った成績を反映する必要があります。

このデータはすべて DB で利用できます。スキル、プロジェクト、成績を 1 つのクエリで取得できます。

私はこれを機能させる方法を理解しようとしています。今のところ、スキルとプロジェクトを表示する方法を理解することしかできません. しかし、それらを適切なグレードに一致させる方法がわかりません。これが私が持っているものです

         $sql = "select skills.name as skillName, projects.name, projects_assessments.assessment  from skills
              INNER JOIN projects_assessments
              ON skills.id = projects_assessments.skillID
              INNER JOIN projects
              ON projects_assessments.projectID = projects.id
              WHERE projects_assessments.studentID = '{student}'
              AND skills.teacher = '{teacher}'";
        $result = mysql_query($sql) or die (mysql_error());
        while($row=mysql_fetch_array($result)) {
            $projects[] = $row['name'];
            $skills[] = $row['skillName'];
        }
        echo "<table><tr><th>Skill</th>";
        $projects = array_unique($projects);
        foreach($projects as $project) {
            echo "<th>$project</th>";
        }
        echo "
        </tr>";
        foreach($skills as $skill) {
            echo "<tr><td>$skill</td></tr>";
        }
        echo "
        </table>

これは以下を返します:

    Skills   | Project #1 | Project #2 | Project #3
   Skill #1                   
   Skill #2                  

本質的に今私が必要としているのは、各スキルの等級を一致させることです。そのデータは $row['assessment'] に保存されます。

助けてくれてありがとう!

4

1 に答える 1

1

2 次元配列でテーブルを作成するだけです。

$table = array();
while ($row = mysql_fetch_array($result)) {
    $table[$row['skillName']][$row['name']] = $row['assessment'];
}

$firstRow = current($table);
// draw columns based on $firstRow

foreach ($table as $skillName => $projectList) {
    // start row
    foreach ($projectList as $assessment) {
        // start column with $assessment as value
    }
}

重要

行を適切に並べ替えてください。

ORDER BY skillName, name;
于 2012-11-29T06:42:57.930 に答える