【问题标题】:How to get the transpose of a html table?如何获得html表格的转置?
【发布时间】:2022-01-23 15:11:29
【问题描述】:

我有一个如下的 sql 查询,它得到的输出与我需要的一样。

SELECT Node, 
       Round(MAX(CASE WHEN Date=  '2022-01-17' THEN  Value END),2) AS day01,
       Round(MAX(CASE WHEN Date = '2022-01-18' THEN  Value END),2) AS day02,
       Round(MAX(CASE WHEN Date = '2022-01-19' THEN  Value END),2) AS day03,
       Round(MAX(CASE WHEN Date = '2022-01-20' THEN  Value END),2) AS day04,
       Round(MAX(CASE WHEN Date = '2022-01-21' THEN  Value END),2) AS day05,
       Round(MAX(CASE WHEN Date = '2022-01-22' THEN  Value END),2) AS day06,
       Round(MAX(CASE WHEN Date = '2022-01-23' THEN  Value END),2) AS day07
FROM table01
GROUP BY Node;

输出:

现在我需要将此表设置为html表,我使用了以下方法。

while ($row = $result -> fetch_assoc())
{
    $Node_table .= '<td style="text-align:center"><b>'.$row['Node'].'</td>';
    $date06_table .= '<td style="text-align:center">'.$row['day01].'</td>';
    $date05_table .= '<td style="text-align:center">'.$row['day02].'</td>';
    $date04_table .= '<td style="text-align:center">'.$row['day03].'</td>';
    $date03_table .= '<td style="text-align:center">'.$row['day04].'</td>';
    $date02_table .= '<td style="text-align:center">'.$row['day05].'</td>';
    $row['Node']++;

    
}



$messagenew.= '
    <table style="top: 15px; left:10px;" border=1 >
          
        <tbody>
            <caption style="color: rgb(241, 239, 243);background: rgb(1, 32, 65); ">UGW Peak Throughput(Gb/s)</caption>
            <tr>
                <td><b></td>'.$Node_table .'
            </tr>

            <tr>
            <td style="text-align:center" ><b>day01</td>'.$date01_table .'
            </tr>
            <tr>
            <td style="text-align:center"><b>day02</td>'.$date02_table .'
            </tr>
            <tr>
            <td style="text-align:center"><b>day03</td>'.$date03_table .'
            </tr>
            <tr>
            <td style="text-align:center"><b>day04</td>'.$date04_table .'
            </tr>
            <tr>
            <td style="text-align:center"><b>day05</td>'.$date05_table .'
            </tr>

        </tbody>
    </table>
';

但这段代码提供了我实际需要的转置形状。这是我收到的输出。

谁能告诉我我哪里做错了?(忽略里面的数字只是为了代表)

【问题讨论】:

  • $row['Node']++的意义是什么; ?你真的应该有这样的事情吗?我认为您应该先将其注释掉。

标签: php html sql


【解决方案1】:

当您运行提取结果并将每个 $row['Node'] 连接到带有 TD 标记的 $node_table 字符串时,您可以将此列数据转换为单个 html 行。

在 fetch 结果循环结束时,您将大致获得 $node_table var 的下一个结果:

'<td>T1</td><td>T2</td><td>T3</td>’.

然后在 $mesagenew html 模板中用 TR 标签包围这个 var 并获取表格行。

其余数据也是如此。

我建议您将获取的行的任何单元格连接到数组中的单个字符串而不是多个变量:

$table_rows[$rowId] .= '<tr><td>'.$row['Node’].'</td><td>'.$row['day01’].'</td><td>'.$row['day02’].'</td><td>'.$row['day03'].'</td><td>'.$row['day04'].'</td><td>'.$row['day05’].'</td></tr>';
$rowId++;

然后你可以把这个数组放到你的 $messagenew 模板中(为了简洁,省略了样式):

$table_caption = '<caption>UGW Peak Throughput(Gb/s)</caption>';
$table_header = '<tr><td>Node</td><td>day01</>...</tr>';
$messagenew .= '<table><tbody>’.$table_caption.$table_header.implode($table_rows).'</tbody></table>';

【讨论】:

  • 成功了。非常感谢
【解决方案2】:

看看这是否有帮助。这是您正在做的事情的一种简化方式

echo "<table>"; // Where your Table starts 
echo "<tr>";
echo "<td>Node</td><td>day01</td><td>day02</td><td>day03</td><td>day04</td><td>day05</td>"; 
echo "</tr>";

while ($row = $result -> fetch_assoc())
{
    // Populate your row like this
    echo "<tr>";
    echo "<td>".$row['Node']."</td><td>".$row['day01]."</td><td>".$row['day02]."</td><td>".$row['day03]."</td><td>".$row['day04]."</td><td>".$row['day05]."</td>";
    echo "</tr>";
}

echo "</table>"; // End of your Table

【讨论】:

  • 我实际上没有找到在哪里添加这个。我需要删除我原来的一些代码吗?
  • 这是完成您正在做的事情的简化方式,向您展示表格的开始位置和表格结束的位置,最后向您展示如何使用来自 MySQL 的数据填充行,顶部的列标题为你希望他们成为。
猜你喜欢
  • 1970-01-01
  • 2013-05-21
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-29
  • 1970-01-01
  • 2019-03-11
相关资源
最近更新 更多