Berita

Menambahkan Total atau Subtotal di widgets.grid.CGridView

11 tahun yang lalu

(Oleh Badiyanto)

widgets.grid.CGridView adalah komponen untuk menampilkan hasil delam bentuk tabel. Pada saat Controller memanggil lewat methode render(...), akan memangil file view yang didalamnya terdapat zii.widgets.grid.CGridView, kemudian menyertakan data dalam bentuk array misal 'model'->$model, atau hasil dari Query.

Bagian ini akan mencoba membuat tabel dengan widgets.grid.CGridView dibaris akhir terdapat TOTAL/JUMLAH DATA.

1. Tambahkan fungsi dalam model sebagai berikut :

public function searchLatihan1()
    {
    $sql="SELECT
                id
                ,nama_pelatihan
                ,instruktur
         FROM
               kuliah.tbl_pelatihan";
     
     $dataLatihan=Yii::app()->db->createCommand($sql)->queryAll();   
     $larikData=array();
     $total=0;   
     $i=0;
     
     foreach ($dataLatihan as $dataLatihan1){      
          $i++;     
          $total = $total + $this->hitungJumPes($dataLatihan1["id"]);  
          $larikData[] = array(
                   'no'=>$i,
                   'nama_pelatihan'=>$dataLatihan1["nama_pelatihan"],                    
                   'instruktur'=>$dataLatihan1["instruktur"],         
                   'jumlah'=>$this->hitungJumPes($dataLatihan1["id"])
                );           
            }  
           
           $larikData[] = array(
                         'no'=>"",
                         'nama_pelatihan'=>"",                    
                         'instruktur'=>"TOTAL KESELURUHAN",         
                         'jumlah'=>$total,
                         );
                 
            $dataProvider=new CArrayDataProvider(
                $larikData,array(
                   'keyField'=>false,
                   'pagination'=>array('pageSize'=>100,),
           ));
 
          return $dataProvider; 
         
    }

Penjelasan

perintah :

$sql="SELECT
           id
          ,nama_pelatihan
          ,instruktur
      FROM
          kuliah.tbl_pelatihan"; adalah pengambilan/menapilkan rekaman denga menggunakan Query.

$dataLatihan=Yii::app()->db->createCommand($sql)->queryAll();   hasil query disimpan ke dalam variabel $dataLatihan, $larikData=array(); mendeklarsikan variabel array

 

foreach ($dataLatihan as $dataLatihan1){      
...................} melakukan loop untuk memindahkan data di variabel $dataLatihan ke $larikData

dengan perintah :

 $larikData[] = array(
                   'no'=>$i,
                   'nama_pelatihan'=>$dataLatihan1["nama_pelatihan"],                    
                   'instruktur'=>$dataLatihan1["instruktur"],         
                   'jumlah'=>$this->hitungJumPes($dataLatihan1["id"])
                );           
            }  

dan

$i++;      konter nomor urut,
$total = $total + $this->hitungJumPes($dataLatihan1["id"]);   menjumlahkan disimpan ke dalam variabel total dengan mengambil dari pemanggilan fungsi $this->hitungJumPes($dataLatihan1["id"]);

fungsi $this->hitungJumPes($dataLatihan1["id"]);

public function hitungJumPes($id)
    {     
     return TblPesPelat::model()->count('tbl_pelatihan_id=:id',array(':id'=>$id));
    }

2. Bagian Controller

public function actionJumlahPeserta()
    {
        $model=new TblPelatihan('search');
        $model->unsetAttributes();  // clear any default values
        if(isset($_GET['TblPelatihan']))
            $model->attributes=$_GET['TblPelatihan'];

        $this->render('jumlahPeserta',array(
            'model'=>$model,
        ));
    }
   

3. Bagian Views dalam file jumlahPeserta.php

h1>Laporan Peserta Pelatihan</h1>

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
    'model'=>$model,
)); ?>
</div><!-- search-form -->

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'tbl-pelatihan-grid',
    'dataProvider'=>$model->searchLatihan1(),
    'filter'=>$model,
    'columns'=>array(
   
         array(
            'name'=>'id',
            'type'=>'raw',
            'header'=>'ID',
            'value'=>'CHtml::encode($data["no"])',
            'htmlOptions'=>array('width'=>'3%','style'=>'text-align:left'),
        ),
        array(
            'name'=>'nama_pelatihan',
            'type'=>'raw',
            'header'=>'PELATIHAN',
            'value'=>'CHtml::encode($data["nama_pelatihan"])',
            'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),  
        ),
         array(
            'name'=>'instruktur',
            'type'=>'raw',
            'header'=>'INSTRUKTUR',
            'value'=>'CHtml::encode($data["instruktur"])',
            'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),  
        ),
         array(
            'name'=>'jumlah',
            'type'=>'raw',
            'header'=>'JUMLAH',
            'value'=>'CHtml::encode($data["jumlah"])',
            'htmlOptions'=>array('width'=>'10%','style'=>'text-align:right'),  
        ),
       
    ),
)); ?>

4. Uji Hasilnya


Berita Lainnya

Perpustakaan UTDI Raih Akreditasi “B” Dari Perpustakaan Nasional RI
Perpustakaan UTDI Raih Akreditasi “B” Dari Perpustakaan Nasional RI

2 tahun yang lalu

Perpustakaan Universitas Teknologi Digital Indonesia (UTDI) berhasil meraih akreditasi “B” dari Perpustakaan Nasional Republik Indonesia berdasarkan evaluasi Lembaga Akreditasi Perpustakaan ...

Selengkapnya
UTDI Laksanakan Pelatihan IoT di SMK N 2 Magetan
UTDI Laksanakan Pelatihan IoT di SMK N 2 Magetan

2 tahun yang lalu

Kamis (24/3), Universitas Teknologi Digital Indonesia (UTDI) melaksanakan pelatihan Internet of Things (IoT) di SMK N 2 Magetan. Kegiatan ini merupakan bentuk ...

Selengkapnya
Dosen UTDI Beri Motivasi Siswa SMA N 1 Sewon
Dosen UTDI Beri Motivasi Siswa SMA N 1 Sewon

3 tahun yang lalu

Dosen Prodi Sistem Informasi, Fakultas Teknologi Informasi, Universitas Teknologi Digital Indonesia (UTDI) yang dahulu bernama STMIK Akakom, Edy Prayitno, S....

Selengkapnya

Teknologi Populer