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

Sri Redjeki Selaku Dosen UTDI Lulus Universiti Selangor Malaysia
Sri Redjeki Selaku Dosen UTDI Lulus Universiti Selangor Malaysia

2 tahun yang lalu

Sebagai promotor adalah Prof Dr MD Sidin A Ishak, Vice President & DVC di Universiti Selangor (Chairman), Prof Dr Habibollah ...

Selengkapnya
Beri Ruang Kreatifitas, UTDI Gelar festival Band Bertajuk UTDI Band Fest Semarak Kreasi Generasi Digital
Beri Ruang Kreatifitas, UTDI Gelar festival Band Bertajuk UTDI Band Fest Semarak Kreasi Generasi Digital

2 tahun yang lalu

Universitas Teknologi Digital Indonesia (UTDI) yang dahulu bernama STMIK Akakom untuk pertama kalinya menggelar acara festival band "UTDI Band Fest” ...

Selengkapnya
Mahasiswa UTDI Cetak Prestasi di Program MBKM Studi Independen Bersertifikat (SIB)
Mahasiswa UTDI Cetak Prestasi di Program MBKM Studi Independen Bersertifikat (SIB)

2 tahun yang lalu

Azzahra Novitri Wulandari, mahasiswa jurusan Informatika di Universitas Teknologi Digital Indonesia (UTDI) di Yogyakarta, yang dulunya merupakan murid SMK jurusan ...

Selengkapnya