在mysql中,是否可以使用php根据年份分隔表

fd3cxomn  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(250)

我有一个简单的专栏,上面写着几年。但是输出在一个表中。是否可以根据不同的年份自动分隔表。

<?php
if(mysqli_num_rows($result) > 0){ ?>

    <table>
        <thead>
            <th>Year</th>
        </thead>
        <tbody>

            <?php
                while($row = mysqli_fetch_assoc($result)){
                    $year = $row['year'];
                ?>
                <tr>
                    <td><?php echo $year; ?></td>
                </tr>

                <?php
                    } ?>
        </tbody>
    </table>
<?php } ?>

这个输出这个

+------+
| year |
+------+
| 2017 |
| 2017 |
| 2018 |
+------+

我在找这个

+------+
| year |
+------+
| 2018 |
+------+ 

+------+
| year |
+------+
| 2017 |
| 2017 |
+------+
q35jwt9p

q35jwt9p1#

您的循环只需要在内部检查结果中的“年”是否已更改,并输出html表的页脚/页眉以开始一个新表。考虑以下伪代码逻辑:

results = query(); // assume ordered by year
year = 0;
first_row = true;
output_HTML_table_header();
while (row = results.next()) {
    if (year != row["year"] && !first_row) {
        output_HTML_table_footer();
        output_HTML_table_header();
    }
    year = row["year"];
    first_row = false;
    output_HTML_table_row(row);
}
output_HTML_table_footer();

假设您的数据如下:

2016
2017
2017
2018
2019

它产生的输出操作是:

HTML table header
  2016 row
HTML table footer
HTML table header
  2017 row
  2017 row
HTML table footer
HTML table header
  2018 row
HTML table footer
HTML table header
  2019 row
HTML table footer

“html table header”输出很简单:

<table>
    <thead>
        <th>Year</th>
    </thead>
    <tbody>

行是:

<tr>
    <td><?php echo $year; ?></td>
</tr>

页脚为:

</tbody>
</table>

您只需要在嵌套逻辑中交替/重复它们。

vltsax25

vltsax252#

如果 $result sql是按年份排序的,您可以使用它。

<?php
$year='';
if(mysqli_num_rows($result) > 0){ 
  echo'<table><thead><th>Year</th></thead><tbody>';
  while($row = mysqli_fetch_assoc($result)){        
    //if a new year create new table
    if($year!=$row['year']&&$year)echo'</tbody></table><table><thead><th>Year</th></thead><tbody>';
    echo'<tr><td>'.$row['year'].'</td></tr>';
    //remeber the last year
    $year=$row['year'];
  }
  echo'</tbody></table>';
}
?>

相关问题