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

Partisipasi mahasiswa STMIK AKAKOM dalam acara Speaking Club
Partisipasi mahasiswa STMIK AKAKOM dalam acara Speaking Club

7 tahun yang lalu

Sebagai mahasiswa kita dituntut untuk terus menggali potensi dan mengembangkan diri. Seperti yang dilakukan teman-teman kita dari English Club STMIK ...

Selengkapnya
Sosialisasi Tentang Jabatan Fungsional Dosen
Sosialisasi Tentang Jabatan Fungsional Dosen

7 tahun yang lalu

Dalam rangka meningkatkan pemahaman para dosen STMIK AKAKOM akan proses pengajuan jabatan fungsional dosen sebagai upaya peningkatan karir para dosen, ...

Selengkapnya
Sosialisasi Jurnal Informatika dan Komputer (JIKO)
Sosialisasi Jurnal Informatika dan Komputer (JIKO)

7 tahun yang lalu

JIKO atau Jurnal Informatika dan Komputer merupakan jurnal ilmiah yang diterbitkan oleh STMIK AKAKOM. Sebagai upaya untuk memberikan wawasan dan ...

Selengkapnya

Teknologi Populer