【问题标题】:Creating table with rowspan php使用rowspan php创建表
【发布时间】:2019-08-08 15:09:12
【问题描述】:

我一直在试图弄清楚如何在 php 中创建下表,然后将其包含在另一个页面上,我要创建的表是:

我一直在使用以下代码,该代码适用于第一行跨度行,但不适用于其他任何行:

<?php
    $tbl1 = sqlsrv_query($connys,"

    select SectorTitle,DataTitle,sum(Aug18)[Aug18],sum(Sep18)[Sep18],sum(Oct18)[Oct18],sum(Nov18)[Nov18],sum(Dec18)[Dec18],sum(Jan19)[Jan19],sum(Feb19)[Feb19],sum(Mar19)[Mar19],sum(Apr19)[Apr19],sum(May19)[May19],sum(Jun19)[Jun19],sum(Jul19)[Jul19]
    from tblsomename

    ");
    if($tbl1 === false){
        die( print_r( sqlsrv_errors(), true));
    }
    while( $row = sqlsrv_fetch_array($tbl1, SQLSRV_FETCH_BOTH)){
    echo "<tr>";
    echo "<td rowspan='3'>".$row['SectorTitle']++."</td>";

        while( $row2 = sqlsrv_fetch_array($tbl1, SQLSRV_FETCH_BOTH)){
    $DataTitle=$row2['DataTitle'];
    $Aug=$row2['Aug18'];
    $Sep=$row2['Sep18'];
    $Oct=$row2['Oct18'];
    $Nov=$row2['Nov18'];
    $Dec=$row2['Dec18'];
    $Jan=$row2['Jan19'];
    $Feb=$row2['Feb19'];
    $Mar=$row2['Mar19'];
    $Apr=$row2['Apr19'];
    $May=$row2['May19'];
    $Jun=$row2['Jun19'];
    $Jul=$row2['Jul19'];
    echo "<td>$DataTitle</td><td>$Aug</td><td>$Sep</td><td>$Oct</td><td>$Nov</td><td>$Dec</td><td>$Jan</td><td>$Feb</td><td>$Mar</td><td>$Apr</td><td>$May</td><td>$Jun</td><td>$Jul</td></tr>";
    }

    }

    ?>

该查询不是实际的查询,但会为您提供一个想法,因为它确实会通过相同的标题。然后将其包含在另一个 php 文件中,该文件将其插入标签等之间。

我的代码目前产生的是:

这是正确的,虽然我似乎无法让它通过扇区标题位循环

【问题讨论】:

  • 你应该调试$row$row2,我认为你的循环不是那么好:/
  • 看起来您需要在内部 while 结束后(在两个右大括号之间)添加一个 &lt;/tr&gt;
  • while 缺少某些条件吗?第一个while 将只处理一次,所有其他数据将在第二个while 中处理 - 因为你循环在同一个结果集上

标签: php html html-table


【解决方案1】:

我认为您可以通过添加一些逻辑来处理单个 while 循环来处理跨行:

$SectorTitle = "";

while( $row = sqlsrv_fetch_array($tbl1, SQLSRV_FETCH_BOTH)){
    echo "<tr>";

    // Check if there is a new sectortitle
    if($SectorTitle != $row['SectorTitle']) {
        $SectorTitle = $row['SectorTitle'];
        echo "<td rowspan='3'>$SectorTitle</td>";
    }

    $DataTitle=$row['DataTitle'];
    $Aug=$row['Aug18'];
    $Sep=$row['Sep18'];
    $Oct=$row['Oct18'];
    $Nov=$row['Nov18'];
    $Dec=$row['Dec18'];
    $Jan=$row['Jan19'];
    $Feb=$row['Feb19'];
    $Mar=$row['Mar19'];
    $Apr=$row['Apr19'];
    $May=$row['May19'];
    $Jun=$row['Jun19'];
    $Jul=$row['Jul19'];
    echo "<td>$DataTitle</td><td>$Aug</td><td>$Sep</td><td>$Oct</td><td>$Nov</td><td>$Dec</td><td>$Jan</td><td>$Feb</td><td>$Mar</td><td>$Apr</td><td>$May</td><td>$Jun</td><td>$Jul</td></tr>";
}

【讨论】:

  • 很高兴听到这个消息!这是您需要定期输出的报告吗?我之所以这么问,是因为我认为有一种相当简单的方法可以避免硬编码的月份名称并使其更具动态性,但如果它只使用一次,那就没有意义了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 2013-12-23
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多