Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 动态表问题_Php_Mysql_Arrays - Fatal编程技术网

Php 动态表问题

Php 动态表问题,php,mysql,arrays,Php,Mysql,Arrays,我正在尝试创建一个表,其中的数据表示如下: Skills | Project #1 | Project #2 | Project #3 Skill #1 Grade Grade Grade Skill #2 Grade Grade Grade 本质上,以Project开头的列是动态的,通过SQL查询获取并存储在数组中 技能也是动态的,存储在数组中。然后,每项技能的分数应该反映出它所在项目的分数 所有这些数据都在数据库中

我正在尝试创建一个表,其中的数据表示如下:

Skills   | Project #1 | Project #2 | Project #3
Skill #1    Grade         Grade        Grade
Skill #2    Grade         Grade        Grade
本质上,以Project开头的列是动态的,通过SQL查询获取并存储在数组中

技能也是动态的,存储在数组中。然后,每项技能的分数应该反映出它所在项目的分数

所有这些数据都在数据库中可用。我可以在一次查询中获得技能、项目和成绩

我正在想办法让它工作。现在,我只能想办法让技能和项目展示出来。不过,我不知道如何让它们与适当的分数相匹配。这是我的

         $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>
基本上我现在需要的是匹配每项技能的等级。该数据存储在$row['assessment']中


谢谢你的帮助

只需在二维数组中构建表:

$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;

只需在二维数组中构建表:

$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;

试试看我不太确定,因为连接不是求和…它们是字符串。我的回答对你有帮助吗?否则我就把它取下来。谢谢。试着看看我不太确定,因为连接不是总和…它们是字符串。我的回答对你有帮助吗?否则我就把它取下来。谢谢