如何在代码点火器视图中使用单独的表显示数据


how to display data using separate tables in codeigniter view

我仍然是CodeIgniter的新手,我想在不同的表格中按学期和学年分开成绩。我该怎么做?

这是我的模型:

public function result_getGrades($studentid)
    {
            $sql="  SELECT g.studentid, sb.subjectcode, s.description, si.firstname,sb.module, sb.sy, sb.sem, g.final 
                    FROM grades g 
                    JOIN subjectblocking sb ON g.blockcode=sb.blockcode
                    JOIN subjects s ON sb.subjectcode=s.subjectcode
                    JOIN studentinfo si ON g.studentid=si.studentid
                    WHERE g.studentid='$studentid'
                    ORDER BY sb.sem DESC, sb.sy DESC;
                    ";
            $result = $this->db->query($sql);
            $result = $result->result();
            return $result;   
    }

这是我的观点:

<table class="table table-bordered">
                    <tr>
                       <th>SY</th>
                       <th>SEM</th>
                       <th>SUBJCODE</th>
                       <th>SUBJECT DESCRIPTION</th>
                       <th>GRADE</th>
                    </tr>
                <?php foreach ($result as $row){ ?>
                    <tr>
                        <td><?php echo $row->sy;?></td>
                        <td><?php echo $row->sem;?></td>
                        <td><?php echo $row->subjectcode;?></td>
                        <td><?php echo $row->description;?></td>
                        <td><?php echo $row->final;?></td>
                    </tr>           
                <?php } ?>

我希望有人能在这个问题上帮助我。我非常需要一个解决方案。提前感谢!

顺便说一下,这是我的控制器:

public function getGrades() 
{
        $studentid = $this->session->userdata('studentid');
        $data['studentid'] = $studentid;
        $this->load->view('layout/navbar');
        $this->load->model('Umodel');
        $data['result'] = $this->Umodel->result_getGrades($studentid); 
        $this->load->view('pages/grades', $data);
        $this->load->view('layout/footer_student');
}

表应如下所示:https://i.stack.imgur.com/Pkqjo.jpg

您可以创建视图,而不是拆分数据。

    CREATE VIEW 2015_Fall AS
    SELECT g.studentid, sb.subjectcode, s.description,
           si.firstname,sb.module, sb.sy, sb.sem, g.final
    JOIN subjectblocking sb ON g.blockcode=sb.blockcode
    JOIN subjects s ON sb.subjectcode=s.subjectcode
    JOIN studentinfo si ON g.studentid=si.studentid
    WHERE g.studentid='$studentid'
    AND  sb.sem = 'Fall' AND sb.sy='2015'
    ORDER BY g.final DESC;

这将为 Fall 创建一个视图,让您像查看单独的表一样查看数据。 但是,您的数据仍本地化在同一表中。 您只有一个单独的数据视图。 您可能希望为每个学期/每年创建一个。 您可以像对普通表一样对视图进行排序和排序。

我会重新排列您的结果以在您的控制器中创建一个漂亮的数组,然后将该数组发送到您的视图以便于解析。试试这个:

控制器:

public function getGrades() {
    $studentid = $this->session->userdata('studentid');
    $data['studentid'] = $studentid;
    $this->load->view('layout/navbar');
    $this->load->model('Umodel');
    $result = $this->Umodel->result_getGrades($studentid);
    $final = array();
    $final["semesters"] = array();
    foreach ($result as $res) {
        if (!isset($final["semesters"][$res->sem])) {
            $final["semesters"][$res->sem] = array();
        }
        array_push($final["semesters"][$res->sem], $res);
    }
    $data['result'] = $final;
    $this->load->view('pages/grades', $data);
    $this->load->view('layout/footer_student');
}

视图:

<?php foreach ($result['semesters'] as $sem) { ?>
    <table class = "table table-bordered">
        <tr>
            <th>SY</th>
            <th>SEM</th>
            <th>SUBJCODE</th>
            <th>SUBJECT DESCRIPTION</th>
            <th>GRADE</th>
        </tr>
        <?php foreach ($sem as $row) { ?>
            <tr>
                <td><?= $row->sy; ?></td>
                <td><?= $row->sem; ?></td>
                <td><?= $row->subjectcode; ?></td>
                <td><?= $row->description; ?></td>
                <td><?= $row->final; ?></td>
            </tr>           
        <?php } ?>
    </table>
<?php } ?>