繁体   English   中英

如何在codeigniter 3中的一条记录中显示数据?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM