как отобразить данные с использованием отдельных таблиц в представлении codeigniter

0

Я все еще новичок в 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');
}

Вот как выглядит таблица: http://imgur.com/BAP4bI5

  • 0
    Под разделением оценок вы подразумеваете две разные таблицы с одинаковыми оценками? Как они в вашей базе данных?
  • 0
    @ValentinValentin Нет, я имею в виду разделение оценок на разные таблицы, и каждая таблица сортируется в зависимости от семестра и учебного года. :)
Показать ещё 3 комментария
Теги:
codeigniter
views

2 ответа

0

Я бы изменил ваши результаты, чтобы создать хороший массив в вашем контроллере, а затем отправить этот массив в ваше представление для упрощения разбора. Попробуй это:

контроллер:

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 } ?>
0

Вместо того, чтобы разбивать ваши данные, вы можете создавать представления.

    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, которое позволит вам просматривать данные, как если бы это была отдельная таблица. Однако ваши данные все еще локализованы в одних и тех же таблицах. У вас просто есть отдельный вид ваших данных. Вы бы хотели создать один из них за каждый семестр/год. Вы можете отсортировать и упорядочить представление, как если бы это была обычная таблица.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню