when I display the data from the database, I find the error that the data is repeated. I want to display data in only one record based on the same siswa_id
This is the table from My database:
This is result :
-----------------------------------------------------------------------
| 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 |
-----------------------------------------------------------------------
It should be like this :
-----------------------------------------------------------------------
| No | Nama Siswa | NIS | Kelas | Jul | Agu | Sep |
-----------------------------------------------------------------------
| 1 |Iwan Setiawan |161710044 |10 RPL | OK | OK | OK |
-----------------------------------------------------------------------
This is My Controllers :
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");
}
}
This is My Models :
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();
}
This is My Views :
<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>
I recommend you, Change the query. Assuming you DB is like this:
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');
Then you query should be:
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`
So, your model should look like:
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;
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.