繁体   English   中英

如何按照 html 表中的列排列从 mysql 获取的数据?

[英]How to arrange data fetched from mysql as per columns in html table?

我有来自 mysql 的数据以这种格式出现(期限上升到 9,当然在一个期限中可能更多。评估的列可能有一个空值或单个值):

学期 课程 评估
1 科学100
1 STEM-200 公元前
2 ASP-400 AB
3 LEV-100 光盘
3 WEL-200 AB

我想使用 PHP 以下表格式显示此表:

学期 1 2 3
课程 科学100 ASP-400 (AB) LEV-100 (CD)
STEM-200(公元前) WEL-200 (AB)

我正在使用以下 PHP 脚本来获得理想的结果,但它所做的只是将所有内容放在一列中:

在这里,学期是学期的数组,课程是课程的数组,水平是评估的数组。

$j=1;
for ($i = 0; $i < $size; $i++){
if($semester[$i] == $semester[$j]){
echo $semester[$i];
echo $semester[$j];
echo '<td>'.$courses[$i]." ".$level[$i].'</td></tr>';
}
else
{
echo'<tr>';
echo'<td>'.$courses[$i]." ".$level[$i].'</td>';
echo'</tr>';
}
$j++;
}

您可以使用这样的东西将水平表变成垂直表:

PHP:

<?php
  function create(string $prefix, string $suffix, array $array){
    $content = '';
    foreach($array as $value){
      $content .= $prefix . $value . $suffix;
    }
    return $content;
  }
  $result= $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

HTML:

<table>
  <tbody>
    <tr>
      <?php echo create('<th>', '</th>', array_column($result, 'columnname1')) ?>
      <?php echo create('<td>', '</td>', array_column($result, 'columnname2')) ?>
    </tr>
  </tbody>
</table>

一种简单的方法是首先按二维数组中的术语对课程进行分组:第一维是术语,第二维表示每个术语的课程

$groupedByTerm = [];
foreach ($courses as $course) {
    if (! isset($groupedByTerm[$course['term']])) {
        $groupedByTerm[$course['term']] = [];
    }
    $groupedByTerm[$course['term']][] = $course['course'];
}

为简单起见,我假设您的数据库中的数据作为关联数组返回 arrays,其中键term为学期编号, course为课程名称。

为了构建表格,您将循环直到所有术语都为空,这可以通过 do-while 完成,当每个术语的所有 arrays 为空时将完成:

$row = 0;
$row = 0;
do {
    $hasData = false;
    echo '<tr>';
    if ($row == 0) {
        echo '<td>Course</td>';
    } else {
        echo '<td></td>';
    }
    foreach ($groupedByTerm as $term) {
        echo '<td>';
        if (is_array($term) && isset($term[$row])) {
            $hasData = true;
            echo $term[$row];
        }
        echo '</td>';
    }
    echo '</tr>';
    $row++;

} while($hasData);

上面的实现将呈现表格的主体。 我只是使用 echo 语句,但您可以将字符串累积在一个变量中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM