将两个不同的 sem 分成不同的表

Separating two different sem into different tables

我想知道如何从我的模型中调用两个数据。为了进一步解释,我希望这种情况发生,这是我的模型:

function result_getGrades($studentid)
        {

            $sql=   "   
                    SELECT g.studentid, sb.subjectcode, s.description, g.final,sb.sem,sb.sy
                    FROM grades g 

                    JOIN subjectblocking sb ON g.blockcode=sb.blockcode

                    JOIN subjects s ON sb.subjectcode=s.subjectcode

                    WHERE g.studentid='$studentid'
                    ORDER BY sb.sem ASC, sb.sy ASC;


                    ";
            $result = $this->db->query($sql);
            $result = $result->result();
            return $result;
        }

这是视图:

<div class="col-md-10">
    <div class="well">
            <table class="table">

                <thead>
                    <th>Subject Code</th>
                    <th>Description</th>
                    <th>Sem</th>
                    <th>School Year</th>
                    <th>Grade</th>
                </thead>
        <?php foreach ($query as $row){ ?>
                    <tr>
                        <td><?php echo $row->subjectcode;?><br></td>
                        <td><?php echo $row->description;?><br></td>
                        <td><?php echo $row->sem;?><br></td>
                        <td><?php echo $row->sy;?><br></td>
                        <td><?php echo $row->final;?><br></td>
                    </tr>

        <?php } ?>  
            </table>

这是它的样子,你可以看到它在一个 table 中,我想将具有不同 sem 的 table 分开,我该怎么做?

您可能不得不偏离传统的 foreach 循环并执行一些 while 循环,如下所示(以下代码未经测试):

<?php 
while($row = current($query)) {
    // Echo the table HTML
    ?>
<table class="table">
    <thead>
        <th>Subject Code</th>
        <th>Description</th>
        <th>Sem</th>
        <th>School Year</th>
        <th>Grade</th>
    </thead>
    <tbody>
    <?php
    // Loop for all the same "sem"s
    do {
        // Echo the HTML
        ?>
        <tr>
            <td><?php echo $row->subjectcode;?><br></td>
            <td><?php echo $row->description;?><br></td>
            <td><?php echo $row->sem;?><br></td>
            <td><?php echo $row->sy;?><br></td>
            <td><?php echo $row->final;?><br></td>
        </tr>
        <?php
        // Set the pointer the the next value in the array and fetch the row
        $nextRow = next($query);
        // If the next row exists, get the "sem" that's next
        if($nextRow) {
            $nextSem = $nextRow->sem;
        }
        else {
            $nextSem = null;
        }
    }
    // Loop while the upcoming "sem" is the same as the one we just printed
    while($nextSem === $row->sem);
    // Echo the end of the table body
    ?>
    </tbody>
</table>
    <?php
}

另一个选择是坚持使用 foreach 循环。但如果 "sem" 不同,则有条件地预先添加/附加 <table> 标签。