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