繁体   English   中英

PHP:列出按日期分组的多条记录

[英]PHP: List multiple record grouped by date

我正在尝试使用 PHP 从 MySQL 数据库中列出多条记录,但是在对其进行分组时,它只返回数据库中的一条记录,下面是我正在使用的 PHP 代码。

<?php
                include "connection.php";               
                
                $query = "select * from lectureupload GROUP BY submittedOn";
                
                $result=mysqli_query($conn, $query);
                
                while ($row = mysqli_fetch_array($result)) {                    
                    
                    echo '<table class="table">';                                               
                    echo '<thead>';
                    echo '<td><strong>ID</strong></td>';
                    echo '<td><strong>Title</strong></td>';
                    echo '<td><strong>Semester</strong></td>';
                    echo '<td><strong>Teacher</strong></td>';
                    echo '<td><strong>Lecture Link</strong></td>';
                    echo '<td><strong>Submitted On</strong></td>';
                    echo '</thead>';
                                            
                    echo '<div class="section-header">';
                        echo '<br>';
                        echo '<h3>'.$row['submittedOn'].'</h3>';
                    echo '</div>';
                    
                    echo '<tr >';
                    echo '<td>'.$row['id'].'</td>';
                    echo '<td>'.$row['title'].'</td>';
                    echo '<td>'.$row['semester'].'</td>';
                    echo '<td>'.$row['teacherName'].'</td>';
                    echo '<td><a href="'.$row['lectureLink'].'">'.$row['lectureLink'].'</a></td>';
                    echo '<td>'.$row['submittedOn'].'</td>';
                    echo '</tr>';
                    
                    echo '</table>';
                }
                
                
                        
                mysqli_close($conn);
                
            ?>

它给我的当前结果有点像这样,

在此处输入图像描述

我的数据库表是这样的。

在此处输入图像描述

对此问题的解决方案将不胜感激。

问候。

您应该将其分组到您的 PHP 代码中,而不是您的 SQL 中。

像这样的东西:

$lectures = [];

$result = mysqli_query($conn, "select * from lectureupload");

while ($row = mysqli_fetch_array($result)) {
    $lectures[$row['submittedOn']][] = $row;
}

foreach ($lectures as $submittedOn => $rows) {
    echo '<table class="table">';                                               
    echo '<thead>';
    echo '<td><strong>ID</strong></td>';
    echo '<td><strong>Title</strong></td>';
    echo '<td><strong>Semester</strong></td>';
    echo '<td><strong>Teacher</strong></td>';
    echo '<td><strong>Lecture Link</strong></td>';
    echo '<td><strong>Submitted On</strong></td>';
    echo '</thead>';
                            
    echo '<div class="section-header">';
        echo '<br>';
        echo '<h3>'.$submittedOn.'</h3>';
    echo '</div>';
    
    foreach ($rows as $row) {
        echo '<tr >';
        echo '<td>'.$row['id'].'</td>';
        echo '<td>'.$row['title'].'</td>';
        echo '<td>'.$row['semester'].'</td>';
        echo '<td>'.$row['teacherName'].'</td>';
        echo '<td><a href="'.$row['lectureLink'].'">'.$row['lectureLink'].'</a></td>';
        echo '<td>'.$row['submittedOn'].'</td>';
        echo '</tr>';
    }
    
    echo '</table>';
}

您不能使用 GROUP BY 子句从该表中检索所有记录。 GROUP BY 将始终为每个 GROUP BY CONDITIONAL_COLUMN 返回一行。 我将建议您进行以下修改:

<?php
include "connection.php";

//ORDER BY submittedOn will make sure the records retrieved in ordered as per submittedOn.
$query = "select * from lectureupload ORDER BY submittedOn";

$result = mysqli_query($conn, $query);
$submitted_on_keys = array();
while ($row = mysqli_fetch_array($result)) {
    if (!in_array($row['submittedOn'], $submitted_on_keys)) {
        if (count($submitted_on_keys) > 0) {
            //It means we have already created <table> which needs to be closed.
            echo '</table>';
        }
        $submitted_on_keys[] = $row['submittedOn'];

        echo '<table class="table">';
        echo '<thead>';
        echo '<td><strong>ID</strong></td>';
        echo '<td><strong>Title</strong></td>';
        echo '<td><strong>Semester</strong></td>';
        echo '<td><strong>Teacher</strong></td>';
        echo '<td><strong>Lecture Link</strong></td>';
        echo '<td><strong>Submitted On</strong></td>';
        echo '</thead>';

        echo '<div class="section-header">';
        echo '<br>';
        echo '<h3>' . $row['submittedOn'] . '</h3>';
        echo '</div>';
    }

    echo '<tr >';
    echo '<td>' . $row['id'] . '</td>';
    echo '<td>' . $row['title'] . '</td>';
    echo '<td>' . $row['semester'] . '</td>';
    echo '<td>' . $row['teacherName'] . '</td>';
    echo '<td><a href="' . $row['lectureLink'] . '">' . $row['lectureLink'] . '</a></td>';
    echo '<td>' . $row['submittedOn'] . '</td>';
    echo '</tr>';

}

if (count($submitted_on_keys) > 0) {
    //There is last <table> which needs to be closed.
    echo '</table>';
}

mysqli_close($conn);
?>

暂无
暂无

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

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