[英]how to display data in one record in codeigniter 3?
当我从数据库中显示数据时,发现数据重复的错误。 我只想在基于相同 siswa_id 的一条记录中显示数据
这是我的数据库中的表:
这是结果:
-----------------------------------------------------------------------
| No | Nama Siswa | NIS | Kelas | Jul | Agu | Sep |
-----------------------------------------------------------------------
| 1 |Iwan Setiawan |161710044 |10 RPL | OK | X | X |
| 2 |Iwan Setiawan |161710044 |10 RPL | X | OK | X |
| 3 |Iwan Setiawan |161710044 |10 RPL | X | X | OK |
-----------------------------------------------------------------------
应该是这样的:
-----------------------------------------------------------------------
| No | Nama Siswa | NIS | Kelas | Jul | Agu | Sep |
-----------------------------------------------------------------------
| 1 |Iwan Setiawan |161710044 |10 RPL | OK | OK | OK |
-----------------------------------------------------------------------
这是我的控制器:
public function RekapPembayaran()
{
if($this->M_login->logged_id())
{
$data['judul'] = 'Rekap Pembayaran SPP';
$data['rekap'] = $this->M_admin->rekap_pembayaran();
$this->load->view('admin/pembayaran-spp/rekap-pembayaran', $data);
} else {
//jika session belum terdaftar, maka redirect ke halaman login
redirect("login");
}
}
这是我的模型:
public function rekap_pembayaran()
{
$this->db->select('*');
$this->db->from('tbl_siswa');
$this->db->join('tbl_pembayaran', 'tbl_siswa.id_siswa=tbl_pembayaran.siswa_id');
$this->db->join('tbl_rombel', 'tbl_siswa.rombel_id=tbl_rombel.id_rombel');
$this->db->order_by('nama_rombel, nama_siswa', 'ASC');
$query = $this->db->get();
return $query->result();
}
这是我的观点:
<tbody>
<?php $no = 1;
foreach ($rekap as $data) { ?>
<tr>
<td><?php echo $no; ?></td>
<td><?php echo $data->nama_siswa; ?></td>
<td><?php echo $data->nis; ?></td>
<td><?php echo $data->nama_rombel; ?></td>
<?php if($data->bulan_dibayar == 7){
echo '<td><j class="btn btn-primary"><b>OK</b></j></td>';
}else{
echo '<td><j class="btn btn-danger"><b>X</b></j></td>';
}?>
<?php if($data->bulan_dibayar == 8){
echo '<td><j class="btn btn-primary"><b>OK</b></j></td>';
}else{
echo '<td><j class="btn btn-danger"><b>X</b></j></td>';
}?>
<?php if($data->bulan_dibayar == 9){
echo '<td><j class="btn btn-primary"><b>OK</b></j></td>';
}else{
echo '<td><j class="btn btn-danger"><b>X</b></j></td>';
}?>
</tr>
<?php $no++;
} ?>
</tbody>
我建议你,改变查询。 假设你的数据库是这样的:
CREATE TABLE `prueba`.`test`
(`id_pembayaran` INT NOT NULL ,
`siswa_id` INT NOT NULL ,
`siswa_descrip` VARCHAR(30) NOT NULL ,
`bulan_dibayar` INT NOT NULL ,
`tanggal_bayar` DATE NOT NULL )
ENGINE = InnoDB;
ALTER TABLE `test` ADD PRIMARY KEY( `id_pembayaran`);
INSERT INTO `test` (`id_pembayaran`, `siswa_id`, `siswa_descrip`, `bulan_dibayar`, `tanggal_bayar`) VALUES
('4', '2', 'Iwan Setiawan ', '7', '2021-07-14'),
('5', '2', 'Iwan Setiawan ', '8', '2021-07-15'),
('6', '2', 'Iwan Setiawan ', '9', '2021-07-16');
那么你的查询应该是:
SELECT t.`siswa_id`, t.`siswa_descrip`,
(select IF(t2.`bulan_dibayar` = 7, "OK", "X") from test t2 where t2.id_pembayaran = t.id_pembayaran)as 'JUL',
(select IF(t2.`bulan_dibayar` = 7, "OK", "X") from test t2 where t2.id_pembayaran = t.id_pembayaran)as 'AUG',
(select IF(t2.`bulan_dibayar` = 7, "OK", "X") from test t2 where t2.id_pembayaran = t.id_pembayaran)as 'SEP'
FROM `test` t
group by t.`siswa_id`
因此,您的模型应如下所示:
public function rekap_pembayaran()
{
$sql = ' SELECT t.`siswa_id`, t.`siswa_descrip`,
(select IF(t2.`bulan_dibayar` = 7, "OK", "X") from test t2 where t2.id_pembayaran = t.id_pembayaran)as 'JUL',
(select IF(t2.`bulan_dibayar` = 7, "OK", "X") from test t2 where t2.id_pembayaran = t.id_pembayaran)as 'AUG',
(select IF(t2.`bulan_dibayar` = 7, "OK", "X") from test t2 where t2.id_pembayaran = t.id_pembayaran)as 'SEP'
FROM `test` t
group by t.`siswa_id`
';
$query = $this->db->query($sql);
if($query->num_rows()>0) {
return $query->result();
}
else {
return null;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.